Files
openafc_final/worker/Dockerfile
2024-03-25 10:11:24 -04:00

86 lines
3.1 KiB
Docker

#
# Copyright (C) 2021 Broadcom. All rights reserved. The term "Broadcom"
# refers solely to the Broadcom Inc. corporate affiliate that owns
# the software below. This work is licensed under the OpenAFC Project License,
# a copy of which is included with this software program
# default value of args
ARG BLD_TAG=3.8.15.0
ARG PRINST_TAG=3.8.15.0
ARG BLD_NAME=public.ecr.aws/w9v6y1o0/openafc/worker-al-build-image
ARG PRINST_NAME=public.ecr.aws/w9v6y1o0/openafc/worker-al-preinstall
# Stage Build
FROM ${BLD_NAME}:${BLD_TAG} as build_image
ARG BUILDREV=localbuild
COPY CMakeLists.txt LICENSE.txt version.txt Doxyfile.in /root/afc/
COPY cmake /root/afc/cmake/
COPY pkg /root/afc/pkg/
COPY selinux /root/afc/selinux/
COPY src /root/afc/src/
RUN mkdir -p -m 777 /root/afc/build
ARG BUILDREV=localbuild
RUN cd /root/afc/build && \
cmake -DCMAKE_INSTALL_PREFIX=/root/afc/__install -DCMAKE_PREFIX_PATH=/usr -DBUILD_WITH_COVERAGE=off -DCMAKE_BUILD_TYPE=EngineRelease -DSVN_LAST_REVISION=$BUILDREV -G Ninja /root/afc && \
ninja -j$(nproc) install
RUN cd /root/afc/src/afc-engine-preload && make && cp libaep.so /root/afc/__install/lib/ && cp parse_fs.py /root/afc/__install/bin/
RUN strip --strip-unneeded /root/afc/__install/bin/afc-engine
RUN strip --strip-unneeded /root/afc/__install/lib/*.so
#
# Stage Install
#
FROM ${PRINST_NAME}:${PRINST_TAG} as install_image
COPY --from=build_image /root/afc/__install /usr/
COPY src/afc-packages /wd/afc-packages
RUN pip3 install --use-pep517 --root-user-action=ignore \
-r /wd/afc-packages/pkgs.worker \
&& rm -rf /wd/afc-packages
RUN mkdir -m 755 -p /var/spool/fbrat
RUN mkdir -m 755 -p /var/lib/fbrat
RUN mkdir -m 755 -p /var/celery
RUN mkdir -m 755 -p /var/run/celery
RUN mkdir -m 755 -p /var/log/celery
RUN chown -R fbrat:fbrat /var/spool/fbrat /var/lib/fbrat /var/celery
COPY worker/docker-entrypoint.sh /
RUN chmod +x /docker-entrypoint.sh
COPY worker/afc-engine.sh /usr/bin/
RUN chmod +x /usr/bin/afc-engine.sh
# Development env
COPY worker/devel.sh worker/ddd.tar.gz /wd/
ARG AFC_DEVEL_ENV=production
ENV AFC_DEVEL_ENV ${AFC_DEVEL_ENV}
# set alternative user
ARG AFC_WORKER_USER=${AFC_WORKER_USER:-root}
ARG AFC_WORKER_UID=${AFC_WORKER_UID}
RUN /wd/devel.sh
RUN rm -f /wd/devel.sh /wd/ddd.tar.gz
FROM alpine:3.18
COPY --from=install_image / /
LABEL revision="afc-worker-al"
ARG AFC_WORKER_USER=${AFC_WORKER_USER:-root}
ENV AFC_WORKER_USER=${AFC_WORKER_USER}
ENV AFC_WORKER_CELERY_WORKERS=${AFC_WORKER_CELERY_WORKERS:-"rat_1"}
ENV AFC_WORKER_CELERY_LOG=${AFC_WORKER_CELERY_LOG:-WARNING}
ENV AFC_WORKER_ENG_TOUT=${AFC_WORKER_ENG_TOUT:-600}
ENV AFC_DEVEL_ENV=${AFC_DEVEL_ENV:-production}
# True to update Rcache by AFC Response sender (Worker), False to update by
# AFC REsponse receiver (MsgHandler, RatAPI)
ENV RCACHE_UPDATE_ON_SEND=True
WORKDIR /wd
ENV PGPORT=5432
ENV XDG_DATA_DIRS=$XDG_DATA_DIRS:/usr/local/share:/usr/share:/usr/share/fbrat:/mnt/nfs
CMD ["/docker-entrypoint.sh"]
HEALTHCHECK --interval=20s --timeout=3s --retries=3 \
CMD for celery_worker in ${AFC_WORKER_CELERY_WORKERS} ; do \
celery -A afc_worker status -d $celery_worker@$(hostname) || exit 1 ; done