-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathDockerfile
41 lines (34 loc) · 1.27 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
FROM node:14-bullseye AS builder
WORKDIR /app/web
COPY web/package.json web/package-lock.json ./
RUN --mount=type=cache,target=/app/web/.npm npm ci
COPY web/webpack.config.js ./
COPY web/src ./src
ARG SENTRY_DSN
RUN npm run build
FROM python:3.10-bullseye AS apt
RUN --mount=type=cache,sharing=locked,target=/var/cache/apt \
apt-get update && \
DEBIAN_FRONTEND=noninteractive apt-get -qy install libyajl-dev
WORKDIR /app
ARG UID=1000
ARG GID=1000
RUN groupadd -g ${GID} app && \
useradd -u ${UID} -g ${GID} --system --create-home --no-log-init app && \
chown -R app:app .
COPY --chown=app:app pyproject.toml pdm.lock ./
RUN --mount=type=cache,target=/root/.cache/pip \
pip3 install pdm~=2.9
USER app
RUN --mount=type=cache,target=/app/.cache/pdm \
pdm install --production --no-self
COPY --chown=app:app web/dist/index.html web/dist/robots.txt web/dist/
COPY --chown=app:app is-osm-uptodate.py ./
COPY --chown=app:app server/ server/
COPY --from=builder --chown=app:app /app/web/dist/ web/dist/
EXPOSE 8000/tcp
ARG SENTRY_DSN
ENV SENTRY_DSN=$SENTRY_DSN
ENV PYTHONPATH=/app/.venv/lib
ENV PATH=$PATH:/app/.venv/bin
CMD ["gunicorn", "is-osm-uptodate:webapp", "--bind", "0.0.0.0:8000", "--workers", "2", "--worker-class", "aiohttp.GunicornWebWorker", "--timeout", "300"]