@@ -61,19 +61,22 @@ FROM base_builder AS http_builder
6161RUN --mount=type=cache,target=~/.cache/uv \
6262 uv sync --no-dev --group http --no-install-project --frozen --no-editable
6363
64- # Installs requirements to run production http application
64+ # Installs requirements to run production socketio application
6565FROM base_builder AS socketio_builder
6666RUN --mount=type=cache,target=~/.cache/uv \
6767 uv sync --no-dev --group socketio --no-install-project --frozen --no-editable
6868
69+ # Installs requirements to run production migrations application
70+ FROM base_builder AS migrations_builder
71+ RUN --mount=type=cache,target=~/.cache/uv \
72+ uv sync --no-dev --group migrations --no-install-project --frozen --no-editable
73+
6974# Create the base app with the common python packages
7075FROM base AS base_app
7176USER nonroot
7277COPY --chown=nonroot:nonroot src/common ./common
7378COPY --chown=nonroot:nonroot src/domains ./domains
7479COPY --chown=nonroot:nonroot src/gateways ./gateways
75- COPY --chown=nonroot:nonroot src/migrations ./migrations
76- COPY --chown=nonroot:nonroot src/alembic.ini .
7780
7881# Copy the http python package and requirements from relevant builder
7982FROM base_app AS http
@@ -89,6 +92,14 @@ COPY --chown=nonroot:nonroot src/socketio_app ./socketio_app
8992# Run CMD using array syntax, so it uses `exec` and runs as PID1
9093CMD ["python" , "-m" , "socketio_app" ]
9194
95+ # Copy the socketio python package and requirements from relevant builder
96+ FROM base_app AS migrations
97+ COPY --from=migrations_builder /venv /venv
98+ COPY --chown=nonroot:nonroot src/migrations ./migrations
99+ COPY --chown=nonroot:nonroot src/alembic.ini .
100+ # Run CMD using array syntax, so it uses `exec` and runs as PID1
101+ CMD ["alembic" , "upgrade" , "heads" ]
102+
92103# Copy the dramatiq python package and requirements from relevant builder
93104FROM base_app AS dramatiq
94105COPY --from=dramatiq_builder /venv /venv
0 commit comments