2 #==================================================================================
3 # Copyright (c) 2018-2019 AT&T Intellectual Property.
5 # Licensed under the Apache License, Version 2.0 (the "License");
6 # you may not use this file except in compliance with the License.
7 # You may obtain a copy of the License at
9 # http://www.apache.org/licenses/LICENSE-2.0
11 # Unless required by applicable law or agreed to in writing, software
12 # distributed under the License is distributed on an "AS IS" BASIS,
13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 # See the License for the specific language governing permissions and
15 # limitations under the License.
16 #==================================================================================
19 # Mnemonic: mcl_runtime.df
20 # Abstract: Docker build file which creaes a runtime image for the listener.
21 # Building should be as simple as:
22 # docker build -f mcl_runtime.f -t mc_listener:xx.xx .
24 # Running the image in a container:
25 # The fifo output directory needs to be mounted to the container
26 # e.g. -v /exports/mcl/fifos:/tmp/mcl/fifos. The internal
27 # directory can be supplied on the command line using -d path, but
28 # should not be needed.
30 # The RMR listen port must be properly exposed to the container. The
31 # internal default is 4560, and can be changed with the -p port option
32 # on the command line (needed if running from docker-compose). Typical
33 # exposure might be -p <host-port>:4560 on the docker run command.
35 # The MC listener application does NOT need route table updates and thus
36 # there is NO need to expose the route table generator port on this
39 # Date: 22 August 2019
40 # Author: E. Scott Daniels
43 FROM ubuntu:18.04 as buildenv
46 RUN apt-get update && apt-get install -y cmake gcc make git g++ wget
48 RUN mkdir /playpen/bin /playpen/src
49 COPY build_dev_env.sh /playpen/bin/
50 COPY Makefile *.h *.c /playpen/src/
52 ENV LD_LIBRARY_PATH=/usr/local/lib64:/usr/local/lib
53 ENV C_INCLUDE_PATH=/usr/local/include
54 RUN bash /playpen/bin/build_dev_env.sh
55 RUN cd /playpen/src/; make -B mc_listener sender pipe_reader
57 # ----- final, smaller image ----------------------------------
60 RUN mkdir -p /playpen/bin
61 COPY --from=buildenv /usr/local/lib/* /usr/local/lib/
62 COPY --from=buildenv /playpen/src/mc_listener /playpen/src/sender /playpen/src/pipe_reader /playpen/bin/
63 COPY verify.sh /playpen/bin
65 ENV LD_LIBRARY_PATH=/usr/local/lib64:/usr/local/lib
66 ENV C_INCLUDE_PATH=/usr/local/include
68 CMD [ "/playpen/bin/mc_listener" ]