blob: 2faaca51d9f00174d36c9bf748d9dda6449a1e7f [file] [log] [blame]
Tommy Carpenter5ad8f032019-05-30 14:33:21 -04001# ==================================================================================
2# Copyright (c) 2019 Nokia
3# Copyright (c) 2018-2019 AT&T Intellectual Property.
4#
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
8#
9# http://www.apache.org/licenses/LICENSE-2.0
10#
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# ==================================================================================
Tommy Carpenter40caa312019-09-12 16:24:10 -040017# install a well known working rmr
18FROM python:3.7-alpine
19RUN apk update && apk add autoconf automake build-base cmake libtool ninja pkgconfig git
Tommy Carpenter9d5ad712019-12-02 11:02:01 -050020RUN git clone --branch 1.10.2 https://gerrit.o-ran-sc.org/r/ric-plt/lib/rmr \
Tommy Carpenter40caa312019-09-12 16:24:10 -040021 && cd rmr \
22 && mkdir build \
23 && cd build \
24 && cmake .. -DPACK_EXTERNALS=1 \
25 && make install
26
27# a1 stage 2
Tommy Carpenter296f8de2019-08-07 11:38:44 -040028FROM python:3.7-alpine
Lott, Christopher (cl778h)0d664f22019-06-07 08:57:58 -040029
Tommy Carpenter9407e112019-06-24 14:27:35 -040030# dir that rmr routing file temp goes into
31RUN mkdir -p /opt/route/
32
Tommy Carpenter40caa312019-09-12 16:24:10 -040033# Gevent needs gcc
34RUN apk update && apk add bash gcc musl-dev
Lott, Christopher (cl778h)438a0a62019-06-18 06:50:13 -040035
Tommy Carpenterbfa46142019-09-26 11:14:16 -040036# Speed hack; we install gevent here because when building repeatedly (eg during dev) and only changing a1 code,
37# we do not need to keep compiling gevent which takes forever
38RUN pip install --upgrade pip && pip install gevent
39
40# copies
41COPY --from=0 /usr/local/lib64/libnng.so /usr/local/lib64/libnng.so
42COPY --from=0 /usr/local/lib64/librmr_nng.so /usr/local/lib64/librmr_nng.so
43COPY a1/ /tmp/a1
44COPY setup.py tox.ini /tmp/
45WORKDIR /tmp
46
Tommy Carpenter296f8de2019-08-07 11:38:44 -040047# do the actual install; this writes into /usr/local, need root
Tommy Carpenterbfa46142019-09-26 11:14:16 -040048RUN pip install .
Tommy Carpenter5ad8f032019-05-30 14:33:21 -040049
Tommy Carpenter9407e112019-06-24 14:27:35 -040050# Switch to a non-root user for security reasons.
51# a1 does not currently write into any dirs so no chowns are needed at this time.
Tommy Carpenter296f8de2019-08-07 11:38:44 -040052ENV A1USER a1user
Tommy Carpenterbfa46142019-09-26 11:14:16 -040053RUN addgroup -S $A1USER && adduser -S -G $A1USER $A1USER
Tommy Carpenter296f8de2019-08-07 11:38:44 -040054USER $A1USER
Tommy Carpenter9407e112019-06-24 14:27:35 -040055
56# misc setups
57EXPOSE 10000
Tommy Carpenter296f8de2019-08-07 11:38:44 -040058ENV LD_LIBRARY_PATH /usr/local/lib/:/usr/local/lib64
Tommy Carpenter5ad8f032019-05-30 14:33:21 -040059ENV RMR_SEED_RT /opt/route/local.rt
Tommy Carpenter40caa312019-09-12 16:24:10 -040060# dont buffer logging
61ENV PYTHONUNBUFFERED 1
62
Tommy Carpenter5ad8f032019-05-30 14:33:21 -040063CMD run.py