FROM docker.io/alpine:3.22 AS base ARG APP_UID=10000 ARG APP_GID=10000 ENV UV_PROJECT=/usr/local/src/dooris/api/ ENV UV_WORKING_DIR=/usr/local/src/dooris/api/ ENV UV_COMPILE_BYTECODE=1 ENV UV_LINK_MODE=copy ENV UV_CACHE_DIR=/var/cache/dooris/uv/ ENV UV_NO_MANAGED_PYTHON=true ENV VIRTUAL_ENV=/usr/local/share/dooris/venv/ ENV PNPM_HOME=/usr/local/share/dooris/pnpm/ ENV PATH=$PNPM_HOME:$VIRTUAL_ENV/bin:$PATH ENV DOORIS_STATIC_ROOT=/var/www/dooris/static/ WORKDIR /usr/local/src/dooris/ RUN apk add --no-cache uv nginx python3 pnpm RUN addgroup -g $APP_GID dooris &&\ adduser -h /usr/local/src/dooris -u $APP_UID -G dooris -D dooris &&\ mkdir -p /var/www/dooris/ /usr/local/share/dooris/ /usr/local/src/dooris/ /var/cache/dooris/ &&\ chown -R dooris:dooris /var/www/dooris/ /usr/local/share/dooris/ /usr/local/src/dooris/ /var/cache/dooris/ FROM base AS deps USER dooris ADD --link --chown=dooris:dooris api/pyproject.toml api/uv.lock api/ # ADD --link --chown=dooris:dooris package.json pnpm-lock.yaml . RUN uv venv $VIRTUAL_ENV &&\ uv sync --active --frozen --no-install-project --no-editable # RUN pnpm install --frozen-lockfile --package-import-method=copy FROM deps AS final ADD --chown=dooris:dooris --link . /usr/local/src/dooris/ # RUN pnpm run build RUN --mount=type=cache,uid=$APP_UID,gid=$APP_GID,target=$UV_CACHE_DIR \ uv sync --active --frozen # RUN export dooris_SECRET_KEY=django-insecure \ # dooris_BASE_URI=http://invalid.invalid \ # dooris_DB_URL=sqlite:///:memory: &&\ # ./manage.py collectstatic --no-input # ADD dev/cmd.sh /usr/local/bin/cmd.sh ENTRYPOINT [ "/usr/local/bin/cmd.sh" ] CMD [ "0.0.0.0:8000" ] EXPOSE 8000/tcp