ISSUE ID:- RICAPP-216
[ric-app/bouncer.git] / Bouncer / baseimage / Dockerfile
1 FROM nexus3.o-ran-sc.org:10002/o-ran-sc/bldr-ubuntu20-c-go:1.0.0 as buildenv
2 #FROM nexus3.o-ran-sc.org:10001/ubuntu:18.04 as buildenv
3 # spaces to save things in the build image to copy to final image
4 RUN mkdir -p /playpen/assets /playpen/src /playpen/bin
5 ARG SRC=.
6
7 WORKDIR /playpen
8
9 # versions we snarf from package cloud
10 ARG RMR_VER=4.8.1
11 #ARG SDL_VER=1.4.0
12 ARG XFCPP_VER=2.3.8
13
14 # package cloud urls for wget
15 ARG PC_REL_URL=https://packagecloud.io/o-ran-sc/release/packages/debian/stretch
16 # ARG PC_STG_URL=https://packagecloud.io/o-ran-sc/staging/packages/debian/stretch
17
18 # pull in rmr
19 RUN wget -nv --content-disposition ${PC_REL_URL}/rmr_${RMR_VER}_amd64.deb/download.deb && \
20         wget -nv --content-disposition ${PC_REL_URL}/rmr-dev_${RMR_VER}_amd64.deb/download.deb && \
21         dpkg -i rmr_${RMR_VER}_amd64.deb rmr-dev_${RMR_VER}_amd64.deb
22
23 # pull in xapp framework c++
24 RUN wget -nv --content-disposition ${PC_REL_URL}/ricxfcpp-dev_${XFCPP_VER}_amd64.deb/download.deb && \
25         wget -nv --content-disposition ${PC_REL_URL}/ricxfcpp_${XFCPP_VER}_amd64.deb/download.deb && \
26         dpkg -i ricxfcpp-dev_${XFCPP_VER}_amd64.deb ricxfcpp_${XFCPP_VER}_amd64.deb
27
28 # # snarf up SDL dependencies, then pull SDL package and install
29 RUN apt-get update && apt-get install -y \
30         libboost-filesystem1.67.0 \
31         libboost-system1.67.0 \
32         libhiredis-dev \
33  libhiredis0.14 \
34         && apt-get clean
35 #RUN wget -nv --content-disposition ${PC_REL_URL}/sdl_${SDL_VER}-1_amd64.deb/download.deb && \
36 #        wget -nv --content-disposition ${PC_REL_URL}/sdl-dev_${SDL_VER}-1_amd64.deb/download.deb &&\
37 #        dpkg -i sdl-dev_${SDL_VER}-1_amd64.deb sdl_${SDL_VER}-1_amd64.deb
38
39 #RUN apt-get update && apt-get install -y cmake gcc make git g++ wget
40 #building cpprestsdk
41 RUN apt-get install -y libcpprest-dev
42
43 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
44
45 RUN git clone https://github.com/Microsoft/cpprestsdk.git casablanca && \
46     cd casablanca && \
47     mkdir build && \
48     cd build && \
49     cmake -G Ninja .. -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTS=OFF -DBUILD_SAMPLES=OFF -DCMAKE_INSTALL_PREFIX=/usr/local .. && \
50     ninja && \
51     ninja install && \
52     cmake -G Ninja .. -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=0 -DBUILD_TESTS=OFF -DBUILD_SAMPLES=OFF -DCMAKE_INSTALL_PREFIX=/usr/local .. && \
53     ninja && \
54     ninja install && \
55     rm -rf casablanca
56 RUN apt-get update && apt-get install -y cmake gcc make git g++ wget
57 #installing all dependicies for pistache
58 RUN apt-get update && apt-get install -y cmake gcc make \
59 git g++ wget meson libcurl4-openssl-dev libssl-dev pkg-config ninja-build
60 RUN git clone https://github.com/Tencent/rapidjson && \
61       cd rapidjson && \
62      mkdir build && \
63      cd build && \
64     cmake -DCMAKE_INSTALL_PREFIX=/usr/local .. && \
65    make install && \
66     cd ../../
67         #rm -rf rapidjson
68
69 #building and installing pistache
70 RUN git clone https://github.com/pistacheio/pistache.git
71 RUN cd pistache && \
72         meson setup build \
73     --buildtype=release \
74     -DPISTACHE_USE_SSL=true \
75     -DPISTACHE_BUILD_EXAMPLES=true \
76     -DPISTACHE_BUILD_TESTS=true \
77     -DPISTACHE_BUILD_DOCS=false \
78     --prefix="/usr/local"
79 RUN cd pistache/build && \
80         ninja && \
81         ninja install
82 RUN cp /usr/local/lib/x86_64-linux-gnu/libpistache* /usr/local/lib/
83 RUN cp /usr/local/lib/x86_64-linux-gnu/pkgconfig/libpistache.pc /usr/local/lib/pkgconfig
84
85 #install nlohmann json
86 RUN git clone https://github.com/nlohmann/json.git && cd json && cmake . && make install
87
88 #install json-schema-validator
89 RUN git clone https://github.com/pboettch/json-schema-validator.git && cd json-schema-validator &&mkdir build &&cd build && cmake .. && make install
90
91 COPY e2ap/ e2ap/
92 COPY e2sm_kpm/ e2sm_kpm/
93 COPY e2sm_rc/ e2sm_rc/
94 # "COMPILING E2AP Wrapper"
95 RUN cd e2ap && \
96     gcc -c -fPIC -Iheaders/ lib/*.c wrapper.c && \
97     gcc *.o -shared -o libe2apwrapper.so && \
98     cp libe2apwrapper.so /usr/local/lib/ && \
99     mkdir /usr/local/include/e2ap && \
100     cp wrapper.h headers/*.h /usr/local/include/e2ap && \
101     ldconfig
102 # "COMPILING E2SM-KPM Wrapper"
103 RUN cd e2sm_kpm && \
104     gcc -c -fPIC -Iheaders/ lib/*.c wrapper.c && \
105     gcc *.o -shared -o libe2smkpmwrapper.so&& \
106     cp libe2smkpmwrapper.so /usr/local/lib/ && \
107     mkdir /usr/local/include/e2sm_kpm && \
108     cp wrapper.h headers/*.h /usr/local/include/e2sm_kpm && \
109     ldconfig
110 # "COMPILING E2SM-RC Wrapper"
111 RUN cd e2sm_rc && \
112     gcc -c -fPIC -Iheaders/ lib/*.c wrapper.c && \
113     gcc *.o -shared -o libe2smrcwrapper.so&& \
114     cp libe2smrcwrapper.so /usr/local/lib/ && \
115     mkdir /usr/local/include/e2sm_rc && \
116     cp wrapper.h headers/*.h /usr/local/include/e2sm_rc && \
117     ldconfig
118 #...
119 #FROM ubuntu:20.04
120
121 #COPY --from=buildenv /usr/local/lib /usr/local/lib/
122 #COPY --from=buildenv /usr/local/include /usr/local/include
123 #COPY --from=buildenv /usr/local/bin/rmr_probe /usr/local/bin/
124 #COPY --from=buildenv /playpen/bin /usr/local/bin/
125 #COPY --from=buildenv /playpen/assets /data
126
127
128 ENV PATH=/usr/local/bin:$PATH
129 ENV LD_LIBRARY_PATH=/usr/local/lib64:/usr/local/lib
130
131 COPY routes.txt .
132 COPY bouncer.cpp .
133
134 # if needed, set RMR vars
135 ENV RMR_SEED_RT=/playpen/routes.txt
136 #ENV RMR_RTG_SVC=rm-host:port
137 ENV RMR_SRC_ID=service-ricxapp-bouncer-xapp-rmr.ricxapp:4560
138 # ENV RMR_VCTL_FILE=/tmp/rmr.v
139 # RUN echo "2" >/tmp/rmr.v
140 #ARG DEBIAN_FRONTEND=noninteractive
141 RUN apt-get update && apt-get install -y gcc g++
142 #libboost-all-dev
143 RUN ls
144
145 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
146
147 RUN cp bouncer-xapp /usr/local/bin/
148 CMD [ "/usr/local/bin/bouncer-xapp" ]
149