2023-02-08 09:41:05 +09:00
|
|
|
# Global ARG, available to all stages (if renewed)
|
|
|
|
|
ARG WORKDIR="/app"
|
|
|
|
|
FROM python:3.11-alpine AS builder
|
|
|
|
|
|
|
|
|
|
# Renew (https://stackoverflow.com/a/53682110):
|
|
|
|
|
ARG WORKDIR
|
|
|
|
|
|
|
|
|
|
# Don't buffer `stdout`:
|
|
|
|
|
ENV PYTHONUNBUFFERED=1
|
|
|
|
|
# Don't create `.pyc` files:
|
|
|
|
|
ENV PYTHONDONTWRITEBYTECODE=1
|
2023-05-02 12:25:07 +09:00
|
|
|
# https://github.com/rust-lang/cargo/issues/2808
|
2023-03-14 20:52:39 +09:00
|
|
|
ENV CARGO_NET_GIT_FETCH_WITH_CLI=true
|
2023-02-08 09:41:05 +09:00
|
|
|
|
2023-03-17 18:43:52 +09:00
|
|
|
# For building CFFI / Crypgotraphy (needed on ARM builds):
|
2023-03-14 22:09:28 +09:00
|
|
|
RUN apk add gcc make musl-dev libffi-dev rust cargo git openssl-dev
|
2023-03-14 19:32:01 +09:00
|
|
|
|
2023-03-14 18:43:03 +09:00
|
|
|
RUN pip install poetry
|
2023-05-02 12:25:07 +09:00
|
|
|
RUN poetry config virtualenvs.in-project true
|
2023-02-08 09:41:05 +09:00
|
|
|
|
|
|
|
|
WORKDIR ${WORKDIR}
|
|
|
|
|
|
2023-03-19 17:31:04 +11:00
|
|
|
COPY --chown=1000:1000 pyproject.toml .
|
2023-02-08 09:41:05 +09:00
|
|
|
RUN poetry install --only main
|
2023-03-19 17:31:04 +11:00
|
|
|
COPY --chown=1000:1000 . .
|
2023-03-17 18:43:52 +09:00
|
|
|
# END Builder
|
2023-02-08 09:41:05 +09:00
|
|
|
|
|
|
|
|
FROM python:3.11-alpine
|
|
|
|
|
|
|
|
|
|
ARG WORKDIR
|
|
|
|
|
WORKDIR ${WORKDIR}
|
|
|
|
|
|
2023-02-17 19:33:39 +09:00
|
|
|
# For FlaskOIDC library
|
|
|
|
|
RUN mkdir /app/instance && chown 1000:1000 /app/instance
|
|
|
|
|
|
2023-05-02 14:17:29 +09:00
|
|
|
RUN mkdir /data
|
|
|
|
|
RUN chown 1000:1000 /data
|
|
|
|
|
|
2023-02-08 09:41:05 +09:00
|
|
|
RUN adduser app -DHh ${WORKDIR} -u 1000
|
|
|
|
|
USER 1000
|
|
|
|
|
|
|
|
|
|
COPY --chown=app:app --from=builder ${WORKDIR} .
|
2023-02-06 04:58:09 +00:00
|
|
|
|
2023-02-17 20:27:32 +09:00
|
|
|
# General variables
|
2023-02-06 04:58:09 +00:00
|
|
|
ENV TZ="UTC"
|
2023-02-20 21:07:32 +09:00
|
|
|
ENV COLOR="blue-grey"
|
2023-02-23 18:47:50 +09:00
|
|
|
ENV HS_SERVER=http://localhost/
|
2023-02-06 04:58:09 +00:00
|
|
|
ENV KEY=""
|
2023-05-08 14:30:46 +09:00
|
|
|
ENV DATA_DIRECTORY=/data
|
2023-03-29 20:33:30 +09:00
|
|
|
# ENV SCRIPT_NAME=/
|
2023-02-23 18:47:50 +09:00
|
|
|
ENV DOMAIN_NAME=http://localhost
|
2023-04-22 05:36:46 +00:00
|
|
|
ENV AUTH_TYPE=""
|
2023-02-27 20:44:48 +09:00
|
|
|
ENV LOG_LEVEL="Info"
|
2023-02-10 22:17:03 +09:00
|
|
|
|
2023-02-17 20:27:32 +09:00
|
|
|
# BasicAuth variables
|
2023-02-23 18:47:50 +09:00
|
|
|
ENV BASIC_AUTH_USER=""
|
|
|
|
|
ENV BASIC_AUTH_PASS=""
|
2023-02-16 20:17:36 +09:00
|
|
|
|
2023-02-19 19:58:56 +09:00
|
|
|
# Flask OIDC Variables
|
2023-02-23 08:17:09 +09:00
|
|
|
ENV OIDC_AUTH_URL=https://localhost
|
2023-02-19 19:58:56 +09:00
|
|
|
ENV OIDC_CLIENT_ID=Headscale-WebUI
|
|
|
|
|
ENV OIDC_CLIENT_SECRET=secret
|
2023-02-17 13:30:35 +09:00
|
|
|
|
2023-02-12 15:03:35 +09:00
|
|
|
# Jenkins build args
|
2023-02-10 22:10:26 +09:00
|
|
|
ARG GIT_COMMIT_ARG=""
|
|
|
|
|
ARG GIT_BRANCH_ARG=""
|
2023-02-10 22:24:29 +09:00
|
|
|
ARG APP_VERSION_ARG=""
|
2023-04-22 05:36:46 +00:00
|
|
|
ARG BUILD_DATE_ARG=""
|
2023-02-17 19:30:29 +09:00
|
|
|
ARG HS_VERSION_ARG=""
|
2023-02-10 22:24:29 +09:00
|
|
|
|
2023-02-17 19:33:39 +09:00
|
|
|
# About section on the Settings page
|
2023-02-10 22:04:15 +09:00
|
|
|
ENV GIT_COMMIT=$GIT_COMMIT_ARG
|
|
|
|
|
ENV GIT_BRANCH=$GIT_BRANCH_ARG
|
2023-02-10 22:24:29 +09:00
|
|
|
ENV APP_VERSION=$APP_VERSION_ARG
|
2023-02-12 15:03:35 +09:00
|
|
|
ENV BUILD_DATE=$BUILD_DATE_ARG
|
2023-02-17 19:30:29 +09:00
|
|
|
ENV HS_VERSION=$HS_VERSION_ARG
|
2023-02-06 04:58:09 +00:00
|
|
|
|
2023-05-02 13:43:53 +09:00
|
|
|
VOLUME /etc/headscale
|
|
|
|
|
VOLUME /data
|
|
|
|
|
|
2023-02-06 04:58:09 +00:00
|
|
|
EXPOSE 5000/tcp
|
2023-03-19 17:30:25 +11:00
|
|
|
ENTRYPOINT ["/app/entrypoint.sh"]
|
2023-02-17 13:48:02 +09:00
|
|
|
|
2023-05-02 13:30:24 +09:00
|
|
|
# Temporarily reduce to 1 workerd
|
2023-05-08 14:30:46 +09:00
|
|
|
CMD gunicorn -w 1 -b 0.0.0.0:5000 server:app
|