@@ -9,14 +9,29 @@ RUN apt-get update \
99 curl \
1010 && rm -rf /var/lib/apt/lists/* /var/cache/*
1111
12- RUN useradd syncmaster --create-home && \
13- mkdir -p /home/syncmaster && \
14- chown -R syncmaster:syncmaster /home/syncmaster
15-
1612WORKDIR /app
1713ENV PYTHONPATH=/app \
1814 PATH="/app/.venv/bin:$PATH"
1915
16+ COPY ./docs/_static/*.svg /app/syncmaster/server/static/
17+
18+ # Swagger UI
19+ ADD --chmod=644 https://cdn.jsdelivr.net/npm/swagger-ui-dist@latest/swagger-ui-bundle.js https://cdn.jsdelivr.net/npm/swagger-ui-dist@latest/swagger-ui.css \
20+ /app/syncmaster/server/static/swagger/
21+
22+ # Redoc
23+ ADD --chmod=644 https://cdn.jsdelivr.net/npm/redoc@latest/bundles/redoc.standalone.js /app/syncmaster/server/static/redoc/redoc.standalone.js
24+
25+ ENV SYNCMASTER__SERVER__OPENAPI__SWAGGER__JS_URL=/static/swagger/swagger-ui-bundle.js \
26+ SYNCMASTER__SERVER__OPENAPI__SWAGGER__CSS_URL=/static/swagger/swagger-ui.css \
27+ SYNCMASTER__SERVER__OPENAPI__REDOC__JS_URL=/static/redoc/redoc.standalone.js \
28+ SYNCMASTER__SERVER__STATIC_FILES__DIRECTORY=/app/syncmaster/server/static
29+
30+ COPY --chmod=755 ./docker/entrypoint_server.sh /app/entrypoint.sh
31+ ENTRYPOINT ["/app/entrypoint.sh"]
32+ EXPOSE 8000
33+ HEALTHCHECK --interval=30s --timeout=5s --start-period=5s --retries=3 CMD ["curl", "-f", "http://localhost:8000/monitoring/ping"]
34+
2035
2136FROM base AS builder
2237
@@ -36,30 +51,12 @@ FROM base AS prod
3651
3752COPY --link --from=builder /app/.venv/ /app/.venv/
3853
39- COPY ./docs/_static/*.svg /app/syncmaster/server/static/
40-
41- # Swagger UI
42- ADD https://cdn.jsdelivr.net/npm/swagger-ui-dist@latest/swagger-ui-bundle.js https://cdn.jsdelivr.net/npm/swagger-ui-dist@latest/swagger-ui.css \
43- /app/syncmaster/server/static/swagger/
44-
45- # Redoc
46- ADD https://cdn.jsdelivr.net/npm/redoc@latest/bundles/redoc.standalone.js /app/syncmaster/server/static/redoc/redoc.standalone.js
47-
48- ENV SYNCMASTER__SERVER__OPENAPI__SWAGGER__JS_URL=/static/swagger/swagger-ui-bundle.js \
49- SYNCMASTER__SERVER__OPENAPI__SWAGGER__CSS_URL=/static/swagger/swagger-ui.css \
50- SYNCMASTER__SERVER__OPENAPI__REDOC__JS_URL=/static/redoc/redoc.standalone.js \
51- SYNCMASTER__SERVER__STATIC_FILES__DIRECTORY=/app/syncmaster/server/static
52-
5354COPY ./syncmaster/ /app/syncmaster/
5455RUN python -m compileall -b /app/syncmaster
55- COPY ./pyproject.toml ./uv.lock /app/syncmaster/
5656
57- COPY --chmod=755 ./docker/entrypoint_scheduler.sh /app/entrypoint.sh
58- ENTRYPOINT ["/app/entrypoint.sh"]
59- EXPOSE 8000
60- HEALTHCHECK --interval=30s --timeout=5s --start-period=5s --retries=3 CMD ["curl", "-f", "http://localhost:8000/monitoring/ping"]
6157# Do not run production as root, to improve security.
6258# Also user does not own anything inside the image, including venv and source code.
59+ RUN useradd syncmaster
6360USER syncmaster
6461
6562
@@ -74,8 +71,4 @@ RUN --mount=type=cache,target=/root/.cache/uv \
7471 --group "test" \
7572 --compile-bytecode
7673
77- COPY --chmod=755 ./docker/entrypoint_server.sh /app/entrypoint.sh
7874RUN sed -i 's/python -m/coverage run -m/g' /app/entrypoint.sh
79- ENTRYPOINT ["/app/entrypoint.sh"]
80- EXPOSE 8000
81- HEALTHCHECK --interval=30s --timeout=5s --start-period=5s --retries=3 CMD ["curl", "-f", "http://localhost:8000/monitoring/ping"]
0 commit comments