1- ARG APP_UID=1000
2- ARG APP_GID=1000
3- ARG BUILD_ROOT=/git/fork-py-kms
4-
5- # :: Util
1+ # ╔═════════════════════════════════════════════════════╗
2+ # ║ SETUP ║
3+ # ╚═════════════════════════════════════════════════════╝
4+ # GLOBAL
5+ ARG APP_UID=1000 \
6+ APP_GID=1000 \
7+ BUILD_ROOT=/git/fork-py-kms
8+
9+ # :: FOREIGN IMAGES
610 FROM 11notes/util AS util
711
8- # :: Build / py-kms
12+ # ╔═════════════════════════════════════════════════════╗
13+ # ║ BUILD ║
14+ # ╚═════════════════════════════════════════════════════╝
15+ # :: PY-KMS
916 FROM alpine/git AS build
10- ARG APP_VERSION
11- ARG BUILD_ROOT
17+ ARG APP_VERSION \
18+ BUILD_ROOT
1219 RUN set -ex; \
1320 git clone https://github.com/11notes/fork-py-kms -b next; \
1421 cd ${BUILD_ROOT}; \
1522 git checkout v${APP_VERSION}; \
1623 cp -R ${BUILD_ROOT}/docker/docker-py3-kms-minimal/requirements.txt ${BUILD_ROOT}/py-kms/requirements.txt; \
1724 cp -R ${BUILD_ROOT}/docker/docker-py3-kms/requirements.txt ${BUILD_ROOT}/py-kms/requirements.gui.txt;
1825
19- # :: Header
26+ # ╔═════════════════════════════════════════════════════╗
27+ # ║ IMAGE ║
28+ # ╚═════════════════════════════════════════════════════╝
29+ # :: HEADER
2030 FROM 11notes/alpine:stable
2131
22- # :: arguments
23- ARG TARGETARCH
24- ARG APP_IMAGE
25- ARG APP_NAME
26- ARG APP_VERSION
27- ARG APP_ROOT
28- ARG APP_UID
29- ARG APP_GID
30- ARG APP_NO_CACHE
32+ # :: default arguments
33+ ARG TARGETPLATFORM \
34+ TARGETOS \
35+ TARGETARCH \
36+ TARGETVARIANT \
37+ APP_IMAGE \
38+ APP_NAME \
39+ APP_VERSION \
40+ APP_ROOT \
41+ APP_UID \
42+ APP_GID \
43+ APP_NO_CACHE
44+
45+ # :: default python image
46+ ARG PIP_ROOT_USER_ACTION=ignore \
47+ PIP_BREAK_SYSTEM_PACKAGES=1 \
48+ PIP_DISABLE_PIP_VERSION_CHECK=1 \
49+ PIP_NO_CACHE_DIR=1
50+
51+ # :: image specific arguments
3152 ARG BUILD_ROOT
3253
33- # :: python image
34- ARG PIP_ROOT_USER_ACTION=ignore
35- ARG PIP_BREAK_SYSTEM_PACKAGES=1
36- ARG PIP_DISABLE_PIP_VERSION_CHECK=1
37- ARG PIP_NO_CACHE_DIR=1
38-
39- # :: environment
40- ENV APP_IMAGE=${APP_IMAGE}
41- ENV APP_NAME=${APP_NAME}
42- ENV APP_VERSION=${APP_VERSION}
43- ENV APP_ROOT=${APP_ROOT}
54+ # :: default environment
55+ ENV APP_IMAGE=${APP_IMAGE} \
56+ APP_NAME=${APP_NAME} \
57+ APP_VERSION=${APP_VERSION} \
58+ APP_ROOT=${APP_ROOT}
4459
45- ENV KMS_LOCALE=1033
46- ENV KMS_ACTIVATIONINTERVAL=120
47- ENV KMS_RENEWALINTERVAL=259200
60+ # :: app specific variables
61+ ENV KMS_LOCALE=1033 \
62+ KMS_ACTIVATIONINTERVAL=120 \
63+ KMS_RENEWALINTERVAL=259200
4864
4965 # :: multi-stage
5066 COPY --from=util /usr/local/bin /usr/local/bin
5167 COPY --from=build ${BUILD_ROOT}/py-kms /opt/py-kms
5268
53- # :: Run
69+ # :: RUN
5470 USER root
5571 RUN eleven printenv;
5672
57- # :: install application
73+ # :: install dependencies
5874 RUN set -ex; \
5975 apk --no-cache --update add \
6076 python3; \
6177 apk --no-cache --update --virtual .build add \
6278 py3-pip;
6379
80+ # :: install and update application
6481 RUN set -ex; \
6582 mkdir -p ${APP_ROOT}/var; \
6683 pip3 install -r /opt/py-kms/requirements.txt; \
@@ -69,24 +86,24 @@ ARG BUILD_ROOT=/git/fork-py-kms
6986 apk del --no-network .build; \
7087 rm -rf /usr/lib/python3.12/site-packages/pip;
7188
72- # :: copy filesystem changes and set correct permissions
89+ # :: copy root filesystem and set correct permissions
7390 COPY ./rootfs /
7491 RUN set -ex; \
7592 chmod +x -R /usr/local/bin; \
7693 chown -R ${APP_UID}:${APP_GID} \
7794 ${APP_ROOT} \
7895 /opt/py-kms;
7996
80- # :: support unraid
97+ # :: enable unraid support
8198 RUN set -ex; \
8299 eleven unraid
83100
84- # :: Volumes
101+ # :: PERSISTENT DATA
85102 VOLUME ["${APP_ROOT}/var" ]
86103
87- # :: Monitor
104+ # :: HEALTH
88105 HEALTHCHECK --interval=5s --timeout=2s --start-interval=5s \
89106 CMD netstat -an | grep -q 1688
90107
91- # :: Start
108+ # :: EXECUTE
92109 USER ${APP_UID}:${APP_GID}
0 commit comments