X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=Bouncer%2Fbaseimage%2FDockerfile;fp=Bouncer%2Fbaseimage%2FDockerfile;h=66a208433ab791d671ca512bff0acd568f652687;hb=fbc7e3ad84fc7269233a2f0b5d416cb1c6f8a6ea;hp=0000000000000000000000000000000000000000;hpb=eb27c05c05b5042d115480c40cffa16e7d473d80;p=ric-app%2Fbouncer.git diff --git a/Bouncer/baseimage/Dockerfile b/Bouncer/baseimage/Dockerfile new file mode 100644 index 0000000..66a2084 --- /dev/null +++ b/Bouncer/baseimage/Dockerfile @@ -0,0 +1,149 @@ +FROM nexus3.o-ran-sc.org:10002/o-ran-sc/bldr-ubuntu20-c-go:1.0.0 as buildenv +#FROM nexus3.o-ran-sc.org:10001/ubuntu:18.04 as buildenv +# spaces to save things in the build image to copy to final image +RUN mkdir -p /playpen/assets /playpen/src /playpen/bin +ARG SRC=. + +WORKDIR /playpen + +# versions we snarf from package cloud +ARG RMR_VER=4.8.1 +#ARG SDL_VER=1.4.0 +ARG XFCPP_VER=2.3.8 + +# package cloud urls for wget +ARG PC_REL_URL=https://packagecloud.io/o-ran-sc/release/packages/debian/stretch +# ARG PC_STG_URL=https://packagecloud.io/o-ran-sc/staging/packages/debian/stretch + +# pull in rmr +RUN wget -nv --content-disposition ${PC_REL_URL}/rmr_${RMR_VER}_amd64.deb/download.deb && \ + wget -nv --content-disposition ${PC_REL_URL}/rmr-dev_${RMR_VER}_amd64.deb/download.deb && \ + dpkg -i rmr_${RMR_VER}_amd64.deb rmr-dev_${RMR_VER}_amd64.deb + +# pull in xapp framework c++ +RUN wget -nv --content-disposition ${PC_REL_URL}/ricxfcpp-dev_${XFCPP_VER}_amd64.deb/download.deb && \ + wget -nv --content-disposition ${PC_REL_URL}/ricxfcpp_${XFCPP_VER}_amd64.deb/download.deb && \ + dpkg -i ricxfcpp-dev_${XFCPP_VER}_amd64.deb ricxfcpp_${XFCPP_VER}_amd64.deb + +# # snarf up SDL dependencies, then pull SDL package and install +RUN apt-get update && apt-get install -y \ + libboost-filesystem1.67.0 \ + libboost-system1.67.0 \ + libhiredis-dev \ + libhiredis0.14 \ + && apt-get clean +#RUN wget -nv --content-disposition ${PC_REL_URL}/sdl_${SDL_VER}-1_amd64.deb/download.deb && \ +# wget -nv --content-disposition ${PC_REL_URL}/sdl-dev_${SDL_VER}-1_amd64.deb/download.deb &&\ +# dpkg -i sdl-dev_${SDL_VER}-1_amd64.deb sdl_${SDL_VER}-1_amd64.deb + +#RUN apt-get update && apt-get install -y cmake gcc make git g++ wget +#building cpprestsdk +RUN apt-get install -y libcpprest-dev + +RUN apt-get install -y g++ git libboost-atomic-dev libboost-thread-dev libboost-system-dev libboost-date-time-dev libboost-regex-dev libboost-filesystem-dev libboost-random-dev libboost-chrono-dev libboost-serialization-dev libwebsocketpp-dev openssl libssl-dev ninja-build zlib1g-dev + +RUN git clone https://github.com/Microsoft/cpprestsdk.git casablanca && \ + cd casablanca && \ + mkdir build && \ + cd build && \ + cmake -G Ninja .. -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTS=OFF -DBUILD_SAMPLES=OFF -DCMAKE_INSTALL_PREFIX=/usr/local .. && \ + ninja && \ + ninja install && \ + cmake -G Ninja .. -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=0 -DBUILD_TESTS=OFF -DBUILD_SAMPLES=OFF -DCMAKE_INSTALL_PREFIX=/usr/local .. && \ + ninja && \ + ninja install && \ + rm -rf casablanca +RUN apt-get update && apt-get install -y cmake gcc make git g++ wget +#installing all dependicies for pistache +RUN apt-get update && apt-get install -y cmake gcc make \ +git g++ wget meson libcurl4-openssl-dev libssl-dev pkg-config ninja-build +RUN git clone https://github.com/Tencent/rapidjson && \ + cd rapidjson && \ + mkdir build && \ + cd build && \ + cmake -DCMAKE_INSTALL_PREFIX=/usr/local .. && \ + make install && \ + cd ../../ + #rm -rf rapidjson + +#building and installing pistache +RUN git clone https://github.com/pistacheio/pistache.git +RUN cd pistache && \ + meson setup build \ + --buildtype=release \ + -DPISTACHE_USE_SSL=true \ + -DPISTACHE_BUILD_EXAMPLES=true \ + -DPISTACHE_BUILD_TESTS=true \ + -DPISTACHE_BUILD_DOCS=false \ + --prefix="/usr/local" +RUN cd pistache/build && \ + ninja && \ + ninja install +RUN cp /usr/local/lib/x86_64-linux-gnu/libpistache* /usr/local/lib/ +RUN cp /usr/local/lib/x86_64-linux-gnu/pkgconfig/libpistache.pc /usr/local/lib/pkgconfig + +#install nlohmann json +RUN git clone https://github.com/nlohmann/json.git && cd json && cmake . && make install + +#install json-schema-validator +RUN git clone https://github.com/pboettch/json-schema-validator.git && cd json-schema-validator &&mkdir build &&cd build && cmake .. && make install + +COPY e2ap/ e2ap/ +COPY e2sm_kpm/ e2sm_kpm/ +COPY e2sm_rc/ e2sm_rc/ +# "COMPILING E2AP Wrapper" +RUN cd e2ap && \ + gcc -c -fPIC -Iheaders/ lib/*.c wrapper.c && \ + gcc *.o -shared -o libe2apwrapper.so && \ + cp libe2apwrapper.so /usr/local/lib/ && \ + mkdir /usr/local/include/e2ap && \ + cp wrapper.h headers/*.h /usr/local/include/e2ap && \ + ldconfig +# "COMPILING E2SM-KPM Wrapper" +RUN cd e2sm_kpm && \ + gcc -c -fPIC -Iheaders/ lib/*.c wrapper.c && \ + gcc *.o -shared -o libe2smkpmwrapper.so&& \ + cp libe2smkpmwrapper.so /usr/local/lib/ && \ + mkdir /usr/local/include/e2sm_kpm && \ + cp wrapper.h headers/*.h /usr/local/include/e2sm_kpm && \ + ldconfig +# "COMPILING E2SM-RC Wrapper" +RUN cd e2sm_rc && \ + gcc -c -fPIC -Iheaders/ lib/*.c wrapper.c && \ + gcc *.o -shared -o libe2smrcwrapper.so&& \ + cp libe2smrcwrapper.so /usr/local/lib/ && \ + mkdir /usr/local/include/e2sm_rc && \ + cp wrapper.h headers/*.h /usr/local/include/e2sm_rc && \ + ldconfig +#... +#FROM ubuntu:20.04 + +#COPY --from=buildenv /usr/local/lib /usr/local/lib/ +#COPY --from=buildenv /usr/local/include /usr/local/include +#COPY --from=buildenv /usr/local/bin/rmr_probe /usr/local/bin/ +#COPY --from=buildenv /playpen/bin /usr/local/bin/ +#COPY --from=buildenv /playpen/assets /data + + +ENV PATH=/usr/local/bin:$PATH +ENV LD_LIBRARY_PATH=/usr/local/lib64:/usr/local/lib + +COPY routes.txt . +COPY bouncer.cpp . + +# if needed, set RMR vars +ENV RMR_SEED_RT=/playpen/routes.txt +#ENV RMR_RTG_SVC=rm-host:port +ENV RMR_SRC_ID=service-ricxapp-bouncer-xapp-rmr.ricxapp:4560 +# ENV RMR_VCTL_FILE=/tmp/rmr.v +# RUN echo "2" >/tmp/rmr.v +#ARG DEBIAN_FRONTEND=noninteractive +RUN apt-get update && apt-get install -y gcc g++ +#libboost-all-dev +RUN ls + +RUN g++ -std=c++17 bouncer.cpp -o bouncer-xapp -lricxfcpp -lrmr_si -lpthread -lm -lboost_system -lcrypto -lssl -lcpprest -lpistache -lnlohmann_json_schema_validator -le2apwrapper -le2smrcwrapper -le2smrcwrapper + +RUN cp bouncer-xapp /usr/local/bin/ +CMD [ "/usr/local/bin/bouncer-xapp" ] +