2023-11-28 00:25:29 +00:00
|
|
|
# syntax=docker/dockerfile:1.6@sha256:ac85f380a63b13dfcefa89046420e1781752bab202122f8f50032edf31be0021
|
2023-12-02 07:04:33 +00:00
|
|
|
FROM ubuntu:lunar-20231128@sha256:5a828e28de105c3d7821c4442f0f5d1c52dc16acf4999d5f31a3bc0f03f06edd as base
|
2023-11-12 19:06:01 +01:00
|
|
|
ARG BASE_IMAGE_NAME=ubuntu:lunar-20231004
|
|
|
|
ARG BASE_IMAGE_DIGEST=sha256:51e70689b125fcc2e800f5efb7ba465dee85ede9da9c268ff5599053c7e52b77
|
2023-11-12 19:04:08 +01:00
|
|
|
ARG TARGETARCH
|
2023-11-12 19:06:01 +01:00
|
|
|
|
|
|
|
LABEL org.opencontainers.image.base.name="docker.io/library/$BASE_IMAGE_NAME" \
|
|
|
|
org.opencontainers.image.base.digest="$BASE_IMAGE_DIGEST" \
|
|
|
|
org.opencontainers.image.source="https://github.com/c3nav/c3nav" \
|
|
|
|
org.opencontainers.image.url="https://c3nav.de" \
|
|
|
|
org.opencontainers.image.authors="c3nav team"
|
|
|
|
|
2023-07-14 05:42:26 +02:00
|
|
|
ENV DEBIAN_FRONTEND noninteractive
|
|
|
|
|
2023-11-12 19:04:08 +01:00
|
|
|
RUN --mount=type=cache,target=/var/cache/apt,id=apt_$TARGETARCH --mount=type=tmpfs,target=/var/lib/apt/lists \
|
|
|
|
rm /etc/apt/apt.conf.d/docker-clean && \
|
2023-07-14 05:42:26 +02:00
|
|
|
apt-get update && apt-get install -y --no-install-recommends \
|
2023-11-28 00:25:29 +00:00
|
|
|
python3.11=3.11.4-1~23.04.1 \
|
2023-11-12 04:59:32 +01:00
|
|
|
# renovate: srcname=python3.11
|
2023-11-28 00:25:29 +00:00
|
|
|
libpython3.11=3.11.4-1~23.04.1 \
|
2023-11-12 04:59:32 +01:00
|
|
|
# renovate: srcname=python3.11
|
2023-11-28 00:25:29 +00:00
|
|
|
python3.11-venv=3.11.4-1~23.04.1 \
|
2023-11-12 04:59:32 +01:00
|
|
|
# renovate: srcname=python-pip
|
2023-11-28 00:25:29 +00:00
|
|
|
python3-pip=23.0.1+dfsg-1ubuntu0.2 \
|
2023-11-12 04:59:32 +01:00
|
|
|
# renovate: srcname=postgresql-15
|
2023-11-12 04:19:49 +00:00
|
|
|
libpq5=15.4-0ubuntu0.23.04.1 \
|
2023-11-12 04:59:32 +01:00
|
|
|
# renovate: srcname=postgresql-15
|
2023-11-12 04:19:49 +00:00
|
|
|
postgresql-client-15=15.4-0ubuntu0.23.04.1 \
|
|
|
|
curl=7.88.1-8ubuntu2.3 \
|
2023-07-14 05:42:26 +02:00
|
|
|
libpcre3=2:8.39-15 \
|
2023-11-12 04:59:32 +01:00
|
|
|
# renovate: srcname=librsvg
|
2023-11-12 04:19:49 +00:00
|
|
|
librsvg2-2=2.54.5+dfsg-1ubuntu2.1 \
|
2023-11-12 04:59:32 +01:00
|
|
|
# renovate: srcname=librsvg
|
2023-11-12 04:19:49 +00:00
|
|
|
gir1.2-rsvg-2.0=2.54.5+dfsg-1ubuntu2.1 \
|
2023-07-14 05:42:26 +02:00
|
|
|
libgirepository-1.0-1=1.76.1-1 \
|
|
|
|
tzdata=2023c-2exp1ubuntu1.1 \
|
|
|
|
ca-certificates=20230311ubuntu0.23.04.1
|
2023-11-26 23:08:06 +01:00
|
|
|
ENV PATH="/usr/lib/postgresql/15/bin/:$PATH"
|
2023-07-14 05:42:26 +02:00
|
|
|
|
|
|
|
|
|
|
|
FROM base as builder
|
2023-11-12 19:04:08 +01:00
|
|
|
RUN --mount=type=cache,target=/var/cache/apt,id=apt_$TARGETARCH --mount=type=tmpfs,target=/var/lib/apt/lists \
|
2023-07-14 05:42:26 +02:00
|
|
|
apt-get update && apt-get install -y --no-install-recommends \
|
|
|
|
build-essential=12.9ubuntu3 \
|
2023-11-12 04:59:32 +01:00
|
|
|
# renovate: srcname=python3.11
|
2023-11-28 00:25:29 +00:00
|
|
|
python3.11-dev=3.11.4-1~23.04.1 \
|
2023-07-14 05:42:26 +02:00
|
|
|
libpcre3-dev=2:8.39-15 \
|
2023-11-12 04:59:32 +01:00
|
|
|
# renovate: srcname=postgresql-15
|
2023-11-12 04:19:49 +00:00
|
|
|
libpq-dev=15.4-0ubuntu0.23.04.1 \
|
2023-07-14 05:42:26 +02:00
|
|
|
libgirepository1.0-dev=1.76.1-1
|
|
|
|
|
|
|
|
|
2023-12-02 04:31:57 +01:00
|
|
|
RUN mkdir /app
|
|
|
|
COPY /src/requirements /app/requirements
|
2023-07-14 05:42:26 +02:00
|
|
|
WORKDIR /app
|
|
|
|
|
|
|
|
RUN --mount=type=cache,target=/pip-cache \
|
|
|
|
python3.11 -m venv env && \
|
|
|
|
. /app/env/bin/activate && \
|
|
|
|
pip install --cache-dir /pip-cache --upgrade pip wheel && \
|
|
|
|
pip install --cache-dir /pip-cache \
|
|
|
|
-r requirements/production.txt \
|
|
|
|
-r requirements/htmlmin.txt \
|
|
|
|
-r requirements/postgres.txt \
|
|
|
|
-r requirements/redis.txt \
|
2023-11-30 21:02:47 +01:00
|
|
|
-r requirements/memcached.txt \
|
2023-07-14 05:42:26 +02:00
|
|
|
-r requirements/rsvg.txt \
|
2023-11-27 05:33:06 +01:00
|
|
|
-r requirements/sentry.txt \
|
2023-07-14 05:42:26 +02:00
|
|
|
-r requirements/server-asgi.txt && \
|
|
|
|
pip install --cache-dir /pip-cache uwsgi
|
|
|
|
|
|
|
|
FROM base as final
|
|
|
|
RUN groupadd -r -g 500 c3nav && useradd -r -u 500 -g 500 -G www-data c3nav
|
2023-11-26 23:08:06 +01:00
|
|
|
RUN mkdir /data /etc/c3nav && chown -R c3nav:c3nav /data /etc/c3nav
|
2023-07-14 05:42:26 +02:00
|
|
|
VOLUME /data
|
|
|
|
|
|
|
|
COPY --link --chown=500:500 /src /app
|
|
|
|
COPY --from=builder --chown=500:500 /app/env /app/env
|
|
|
|
COPY --chown=root:root --chmod=0755 /docker/entrypoint.sh /usr/bin/entrypoint
|
|
|
|
|
|
|
|
ENV C3NAV_DEBUG="" \
|
2023-11-29 19:48:09 +01:00
|
|
|
C3NAV_LOGLEVEL="INFO" \
|
2023-07-14 05:42:26 +02:00
|
|
|
C3NAV_DATA_DIR="/data" \
|
2023-11-12 16:21:46 +01:00
|
|
|
C3NAV_AUTOMIGRATE="yes" \
|
2023-07-14 05:42:26 +02:00
|
|
|
MPLBACKEND="agg" \
|
2023-11-30 21:03:03 +01:00
|
|
|
UWSGI_WORKERS="4" \
|
2023-11-26 23:08:06 +01:00
|
|
|
PATH="/app/env/bin/:$PATH"
|
2023-07-14 05:42:26 +02:00
|
|
|
|
|
|
|
USER c3nav
|
|
|
|
WORKDIR /app
|
|
|
|
|
|
|
|
RUN /app/env/bin/python manage.py collectstatic -l --no-input && \
|
|
|
|
/app/env/bin/python manage.py compress && \
|
|
|
|
rm -r /data/*
|
|
|
|
|
|
|
|
EXPOSE 8000 5000
|
|
|
|
#HEALTHCHECK --start-period=5s --interval=10s --timeout=1s CMD curl -f http://localhost:8000/check || exit 1
|
|
|
|
ENTRYPOINT ["/usr/bin/entrypoint"]
|
|
|
|
CMD ["web"]
|