X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=sidecars%2Flistener%2FDockerfile;h=31c986fe819b0ba909d9f6e8ad621bf1a4dfb2ab;hb=864f10396c88275c4be3c6baf229a7c0d8580675;hp=14f0ba94d2c9914ae45d8ca2f63ce4c17f3842d4;hpb=fe2bd3618e4748333078f91c26a8a3f5dcf184c4;p=ric-app%2Fmc.git diff --git a/sidecars/listener/Dockerfile b/sidecars/listener/Dockerfile index 14f0ba9..31c986f 100644 --- a/sidecars/listener/Dockerfile +++ b/sidecars/listener/Dockerfile @@ -1,49 +1,85 @@ # vim: ts=4 sw=4 noet: - -# ------------------------------------------------------------------------------- -# Copyright (c) 2018-2019 AT&T Intellectual Property. +#================================================================================== +# Copyright (c) 2018-2019 AT&T Intellectual Property. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. -# ------------------------------------------------------------------------------- +#================================================================================== -# CAUTION: This file eventually should exist in the ci directory, however until -# this can be confirmed, and the .yaml file(s) in the ci project changed -# to indicaate that ci/Dockerfile should be used, this is here with minor -# changes needed to exist at the root. -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# CI to verify the MC application components -# Inherits C toolchain from buildpack-deps:stretch then adds cmake and better shell(s). +# Mnemonic: Dockerfile +# Abstract: Build file which creaes a runtime image for the listener. +# Building should be as simple as: +# +# docker build -f sidecars/listener/Dockerfile -t mc_listener:xx.xx . +# +# Running the image in a container: +# The fifo output directory needs to be mounted to the container +# e.g. -v /exports/mcl/fifos:/tmp/mcl/fifos. The internal +# directory can be supplied on the command line using -d path, but +# should not be needed. +# +# The RMR listen port must be properly exposed to the container. The +# internal default is 4560, and can be changed with the -p port option +# on the command line (needed if running from docker-compose). Typical +# exposure might be -p :4560 on the docker run command. +# +# The MC listener application does NOT need route table updates and thus +# there is NO need to expose the route table generator port on this +# container. +# +# Date: 22 August 2019 +# Author: E. Scott Daniels -# It is assumed that this docker file is used with a build command run at the -# root level of the repo (directory containing the ci directory). E.g. -# docker build -f ci/Dockerfile . -FROM buildpack-deps:stretch +FROM nexus3.o-ran-sc.org:10004/bldr-ubuntu16-c-go:2-u16.04-nng as buildenv +RUN mkdir /playpen -RUN apt-get update && apt-get -q -y install cmake ksh +RUN apt-get update && apt-get install -y cmake gcc make git g++ wget -# stuff our repo things into a scratch area -RUN mkdir /playpen -ADD . /playpen +WORKDIR /playpen +# Install RMr (runtime and dev) from debian package cached on packagecloud.io +ARG RMR_VER=1.10.2 + +RUN wget -nv --content-disposition https://packagecloud.io/o-ran-sc/staging/packages/debian/stretch/rmr_${RMR_VER}_amd64.deb/download.deb +RUN wget -nv --content-disposition https://packagecloud.io/o-ran-sc/staging/packages/debian/stretch/rmr-dev_${RMR_VER}_amd64.deb/download.deb +RUN dpkg -i rmr_${RMR_VER}_amd64.deb +RUN dpkg -i rmr-dev_${RMR_VER}_amd64.deb + +RUN mkdir /playpen/bin /playpen/src +ARG SRC=. +COPY ${SRC}/Makefile ${SRC}/*.h ${SRC}/*.c /playpen/src/ + +ENV LD_LIBRARY_PATH=/usr/local/lib64:/usr/local/lib +ENV C_INCLUDE_PATH=/usr/local/include +RUN cd /playpen/src/; make -B mc_listener sender pipe_reader rdc_replay rdc_extract + +# ----- final, smaller image ---------------------------------- +FROM ubuntu:18.04 + +# bash doesn't cut it for run_replay so grab a real shell and clean up as much as we can +RUN apt-get update; apt-get install -y ksh +RUN rm -fr /var/lib/apt/lists +# obtusely this uses the previous value +ARG SRC -# add any unit test scripts that need to be driven, e.g. -# RUN ksh test/mcl_unit_test.ksh +RUN mkdir -p /playpen/bin +COPY --from=buildenv /usr/local/lib/* /usr/local/lib/ +COPY --from=buildenv /playpen/src/mc_listener /playpen/src/sender /playpen/src/pipe_reader /playpen/src/rdc_replay /playpen/src/rdc_extract /playpen/bin/ +COPY ${SRC}/verify_replay.sh ${SRC}/verify.sh ${SRC}run_replay.sh ${SRC}/help /playpen/bin/ -# This is a final/only script which might print useful things to the log and ALWAYS succeeds. -RUN ksh /playpen/ci/stats.ksh +ENV PATH=/playpen/bin:$PATH +ENV LD_LIBRARY_PATH=/usr/local/lib64:/usr/local/lib +ENV C_INCLUDE_PATH=/usr/local/include -# there is no cmd; the build/verification assumes that if the image is created -# successfully, e.g. none of the previous run commands fail, that the environment -# is successfully vetted. +CMD [ "/playpen/bin/mc_listener" ]