Add Docker test deployment on Gitea Actions
Docker test deployment / test-build-deploy (push) Successful in 4m5s
Docker test deployment / test-build-deploy (push) Successful in 4m5s
This commit is contained in:
+33
@@ -0,0 +1,33 @@
|
||||
# syntax=docker/dockerfile:1
|
||||
FROM ghcr.io/astral-sh/uv:0.11.3 AS uv
|
||||
FROM python:3.12-slim-bookworm AS build
|
||||
COPY --from=uv /uv /usr/local/bin/uv
|
||||
ENV UV_PROJECT_ENVIRONMENT=/opt/venv UV_LINK_MODE=copy UV_COMPILE_BYTECODE=1 UV_PYTHON_DOWNLOADS=never
|
||||
WORKDIR /build
|
||||
COPY pyproject.toml uv.lock README.md ./
|
||||
COPY src ./src
|
||||
RUN uv sync --locked --no-dev --no-editable --all-extras
|
||||
|
||||
FROM build AS test
|
||||
RUN uv sync --locked --no-editable --all-extras
|
||||
COPY tests ./tests
|
||||
COPY scripts ./scripts
|
||||
ENV PATH="/opt/venv/bin:$PATH"
|
||||
CMD ["sh", "-c", "ruff check . && ruff format --check . && pytest"]
|
||||
|
||||
FROM python:3.12-slim-bookworm AS runtime
|
||||
ENV PATH="/opt/venv/bin:$PATH" PYTHONDONTWRITEBYTECODE=1 PYTHONUNBUFFERED=1 \
|
||||
DATABASE_URL=sqlite:////data/adcloud.db PROFILE_BACKEND=relational \
|
||||
IDENTITY_BOOTSTRAP_FILE=/config/identity.env COOKIE_SECURE=false
|
||||
RUN groupadd --gid 10001 adcloud && useradd --uid 10001 --gid adcloud --no-create-home adcloud \
|
||||
&& mkdir -p /app/scripts /data /config \
|
||||
&& chown -R adcloud:adcloud /app /data /config && chmod 700 /data /config
|
||||
COPY --from=build /opt/venv /opt/venv
|
||||
COPY scripts/smoke_api.py /app/scripts/smoke_api.py
|
||||
WORKDIR /app
|
||||
USER 10001:10001
|
||||
EXPOSE 8000
|
||||
HEALTHCHECK --interval=10s --timeout=3s --start-period=20s --retries=6 \
|
||||
CMD ["python", "-c", "import urllib.request; urllib.request.urlopen('http://127.0.0.1:8000/health', timeout=2).read()"]
|
||||
ENTRYPOINT ["python", "-m", "adcloud_server.container_entrypoint"]
|
||||
CMD ["uvicorn", "adcloud_server.main:app", "--host", "0.0.0.0", "--port", "8000"]
|
||||
Reference in New Issue
Block a user