X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=sidecars%2Flistener%2FDockerfile;h=134884fef9eaba70e0fdd7036b8cbfe76a281c22;hb=6e17d942d080f0c8849b0b86741bdaf2ecd5e0fe;hp=14f0ba94d2c9914ae45d8ca2f63ce4c17f3842d4;hpb=fe2bd3618e4748333078f91c26a8a3f5dcf184c4;p=ric-app%2Fmc.git diff --git a/sidecars/listener/Dockerfile b/sidecars/listener/Dockerfile index 14f0ba9..134884f 100644 --- a/sidecars/listener/Dockerfile +++ b/sidecars/listener/Dockerfile @@ -1,49 +1,81 @@ # 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 + +# ----- final, smaller image ---------------------------------- +FROM ubuntu:18.04 +# 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/bin/ +COPY ${SRC}/verify.sh /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 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" ]