@@ -3,6 +3,14 @@ ARG PYTHON_VERSION=3.12-slim
3
3
# Build stage
4
4
FROM python:${PYTHON_VERSION} AS build
5
5
6
+ # Compile bytecode
7
+ # Ref: https://docs.astral.sh/uv/guides/integration/docker/#compiling-bytecode
8
+ ENV UV_COMPILE_BYTECODE=1
9
+
10
+ # uv Cache
11
+ # Ref: https://docs.astral.sh/uv/guides/integration/docker/#caching
12
+ ENV UV_LINK_MODE=copy
13
+
6
14
RUN apt-get update && \
7
15
apt-get install -y git && \
8
16
rm -rf /var/lib/apt/lists/*
@@ -13,20 +21,28 @@ RUN pip install --no-cache-dir --upgrade uv
13
21
ENV SETUPTOOLS_SCM_PRETEND_VERSION_FOR_AAI_JOBQ_SERVER=0.0.0
14
22
15
23
WORKDIR /code
16
- COPY ./uv.lock uv.lock
17
- COPY ./pyproject.toml pyproject.toml
18
- RUN uv sync --locked
24
+ COPY ./alembic.ini alembic.ini
19
25
26
+ RUN --mount=type=cache,target=/root/.cache/uv \
27
+ --mount=type=bind,source=uv.lock,target=uv.lock \
28
+ --mount=type=bind,source=pyproject.toml,target=pyproject.toml \
29
+ uv sync --frozen --no-install-project
20
30
31
+ COPY ./pyproject.toml ./uv.lock ./alembic.ini /code/
21
32
COPY ./src /code/src
22
- RUN uv pip install --no-deps .
33
+
34
+ RUN --mount=type=cache,target=/root/.cache/uv \
35
+ uv sync
23
36
24
37
# Runtime stage
25
38
FROM python:${PYTHON_VERSION}
26
39
27
40
WORKDIR /code
41
+ COPY scripts/entrypoint.sh /entrypoint.sh
28
42
COPY --chown=nobody:nogroup --from=build /code /code
29
43
30
44
USER nobody
31
45
32
- CMD ["/code/.venv/bin/uvicorn" , "jobq_server.__main__:app" , "--host" , "0.0.0.0" , "--port" , "8000" ]
46
+ ENV PYTHONUNBUFFERED=1
47
+
48
+ CMD ["/entrypoint.sh" ]
0 commit comments