generated from ministryofjustice/template-repository
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathDockerfile
63 lines (51 loc) · 2.21 KB
/
Dockerfile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
FROM public.ecr.aws/ubuntu/ubuntu@sha256:e0fb16e0974075af9edf8bfdfa1d55714f64788151aedd10dff2903f54ffab53
LABEL org.opencontainers.image.vendor="Ministry of Justice" \
org.opencontainers.image.authors="Analytical Platform (analytical-platform@digital.justice.gov.uk)" \
org.opencontainers.image.title="MLflow" \
org.opencontainers.image.description="MLflow image for Analytical Platform" \
org.opencontainers.image.url="https://github.com/ministryofjustice/analytical-platform-mlflow"
ENV CONTAINER_USER="analyticalplatform" \
CONTAINER_UID="1001" \
CONTAINER_GROUP="analyticalplatform" \
CONTAINER_GID="1001" \
DEBIAN_FRONTEND="noninteractive" \
MLFLOW_ROOT="/mlflow" \
MLFLOW_VERSION="2.15.1" \
BOTO3_VERSION="1.35.0" \
PROMETHEUS_FLASK_EXPORTER_VERSION="0.23.1" \
PSYCOPG2_BINARY_VERSION="2.9.9"
SHELL ["/bin/bash", "-e", "-u", "-o", "pipefail", "-c"]
RUN <<EOF
groupadd \
--gid ${CONTAINER_GID} \
${CONTAINER_GROUP}
useradd \
--uid ${CONTAINER_UID} \
--gid ${CONTAINER_GROUP} \
--create-home \
--shell /bin/bash \
${CONTAINER_USER}
apt-get update --yes
apt-get install --no-install-recommends --yes \
"ca-certificates=20240203" \
"curl=8.5.0-2ubuntu10.2" \
"libpq-dev=16.3-0ubuntu0.24.04.1" \
"python3.12=3.12.3-1ubuntu0.1" \
"python3-pip=24.0+dfsg-1ubuntu1"
apt-get clean --yes
rm --force --recursive /var/lib/apt/lists/*
pip install --break-system-packages --no-cache-dir \
"mlflow==${MLFLOW_VERSION}" \
"boto3==${BOTO3_VERSION}" \
"prometheus-flask-exporter==${PROMETHEUS_FLASK_EXPORTER_VERSION}" \
"psycopg2-binary==${PSYCOPG2_BINARY_VERSION}"
install --directory --owner ${CONTAINER_USER} --group ${CONTAINER_GROUP} --mode 0755 ${MLFLOW_ROOT}
EOF
USER ${CONTAINER_USER}
WORKDIR ${MLFLOW_ROOT}
EXPOSE 5000
COPY --chown=${CONTAINER_USER}:${CONTAINER_GROUP} src/mlflow/auth.ini /mlflow/auth.ini
COPY --chown=nobody:nobody --chmod=0755 src/usr/local/bin/entrypoint.sh /usr/local/bin/entrypoint.sh
COPY --chown=nobody:nobody --chmod=0755 src/usr/local/bin/healthcheck.sh /usr/local/bin/healthcheck.sh
ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
HEALTHCHECK --interval=15s --timeout=10s --start-period=10s --retries=3 CMD ["/usr/local/bin/healthcheck.sh"]