2023-08-30 15:26:53 +02:00
|
|
|
# app/Dockerfile
|
|
|
|
|
|
|
|
# pull the official docker image
|
|
|
|
FROM python:3.10-alpine as base
|
|
|
|
|
|
|
|
# set env variables
|
|
|
|
ENV PYTHONDONTWRITEBYTECODE 1
|
|
|
|
ENV PYTHONUNBUFFERED 1
|
|
|
|
ENV PIP_DISABLE_PIP_VERSION_CHECK=on
|
|
|
|
|
2023-09-04 15:14:58 +02:00
|
|
|
# install app dependences
|
2023-08-30 15:26:53 +02:00
|
|
|
COPY requirements.txt ./
|
|
|
|
RUN pip install --no-cache-dir --root-user-action=ignore -r requirements.txt
|
|
|
|
|
2023-09-04 15:14:58 +02:00
|
|
|
# now multistage builds
|
2023-08-30 15:26:53 +02:00
|
|
|
FROM python:3.10-alpine
|
|
|
|
|
2023-09-04 15:14:58 +02:00
|
|
|
# set env variables
|
|
|
|
ENV PYTHONDONTWRITEBYTECODE 1
|
|
|
|
ENV PYTHONUNBUFFERED 1
|
|
|
|
|
|
|
|
# default build args
|
|
|
|
ARG VERSION=0.1.0 \
|
|
|
|
APP_DIR=/app \
|
2023-09-11 06:53:03 +02:00
|
|
|
DATA_DIR=/app/data \
|
2023-09-04 15:14:58 +02:00
|
|
|
SRC_DIR=./logs_collector \
|
|
|
|
SCRIPTS_DIR=./scripts \
|
|
|
|
WEB_PORT=8000 \
|
|
|
|
USER_NAME=collector \
|
|
|
|
USER_GROUP=collector \
|
|
|
|
APP_UID=1000 \
|
|
|
|
APP_GID=1000
|
|
|
|
|
|
|
|
# copy app dependences
|
2023-08-30 15:26:53 +02:00
|
|
|
COPY --from=base /usr/local/lib/python3.10/site-packages/ /usr/local/lib/python3.10/site-packages/
|
|
|
|
COPY --from=base /usr/local/bin/ /usr/local/bin/
|
|
|
|
|
2023-09-11 06:53:03 +02:00
|
|
|
# add curl and createa user to avoid running container as root &&
|
|
|
|
# create storage dir
|
2023-09-04 15:14:58 +02:00
|
|
|
RUN apk add --no-cache --upgrade curl && \
|
|
|
|
addgroup --system ${USER_GROUP} --gid ${APP_GID} && \
|
2023-09-11 06:53:03 +02:00
|
|
|
adduser --system --uid ${APP_UID} --ingroup ${USER_GROUP} ${USER_NAME} && \
|
|
|
|
mkdir -p ${APP_DIR}/data && \
|
|
|
|
chown -R ${USER_NAME}:${USER_GROUP} ${DATA_DIR}
|
2023-09-04 15:14:58 +02:00
|
|
|
|
|
|
|
# switch to user
|
|
|
|
USER ${USER_NAME}
|
|
|
|
|
|
|
|
# copy src and entrypoint.sh to app dir
|
|
|
|
COPY --chown=${USER_NAME}:${USER_GROUP} ${SRC_DIR} ${APP_DIR}
|
2023-09-11 06:53:03 +02:00
|
|
|
COPY --chown=${USER_NAME}:${USER_GROUP} ${SCRIPTS_DIR}/entrypoint.sh ${APP_DIR}
|
2023-09-04 15:14:58 +02:00
|
|
|
|
|
|
|
# set workdir
|
|
|
|
WORKDIR ${APP_DIR}
|
|
|
|
|
|
|
|
# app listens on this port by default
|
|
|
|
EXPOSE ${WEB_PORT}
|
|
|
|
|
2023-08-30 15:26:53 +02:00
|
|
|
# set lables about app
|
|
|
|
LABEL maintainer="s.zhukovskii@ispsystem.com"
|
2023-09-04 15:14:58 +02:00
|
|
|
LABEL me.zhukovsky.logs-collector.version=v${VERSION}
|
2023-08-30 15:26:53 +02:00
|
|
|
|
2023-09-04 15:14:58 +02:00
|
|
|
# call the health check endpoint of app
|
2023-09-08 09:47:07 +02:00
|
|
|
HEALTHCHECK CMD curl --fail http://localhost:${WEB_PORT} || exit 1
|
2023-08-30 15:26:53 +02:00
|
|
|
|
2023-09-04 15:14:58 +02:00
|
|
|
# run app
|
2023-08-30 15:26:53 +02:00
|
|
|
ENTRYPOINT [ "sh", "entrypoint.sh" ]
|