fix(version): read app version from the committed VERSION file
Make APP_VERSION come from the VERSION file (Dockerfile reads it for the SPA build and ships it for the backend to read at runtime) instead of depending solely on a deploy-time build-arg. This keeps the version correct even for a plain `docker compose build` and removes the first-deploy bootstrap gap. git_sha/build_date stay best-effort build-args.
This commit is contained in:
parent
30a84cbcb9
commit
cf14c53b89
2 changed files with 30 additions and 10 deletions
19
Dockerfile
19
Dockerfile
|
|
@ -1,5 +1,7 @@
|
|||
# Build/version info, injected via --build-arg (defaults keep un-built/dev runs working).
|
||||
ARG APP_VERSION=dev
|
||||
# Build/version info. APP_VERSION comes from the committed VERSION file (always correct,
|
||||
# even for a plain `docker compose build`); GIT_SHA/BUILD_DATE are best-effort build-args
|
||||
# the deploy scripts pass. An explicit APP_VERSION build-arg still overrides the file.
|
||||
ARG APP_VERSION=
|
||||
ARG GIT_SHA=unknown
|
||||
ARG BUILD_DATE=
|
||||
|
||||
|
|
@ -8,24 +10,25 @@ FROM node:20-alpine AS frontend
|
|||
ARG APP_VERSION
|
||||
ARG GIT_SHA
|
||||
ARG BUILD_DATE
|
||||
# Vite inlines VITE_*-prefixed env into the bundle at build time.
|
||||
ENV VITE_APP_VERSION=$APP_VERSION VITE_GIT_SHA=$GIT_SHA VITE_BUILD_DATE=$BUILD_DATE
|
||||
WORKDIR /fe
|
||||
COPY frontend/package.json ./
|
||||
RUN npm install
|
||||
COPY frontend/ ./
|
||||
RUN npm run build
|
||||
COPY VERSION ./.version
|
||||
# Vite inlines VITE_*-prefixed env at build time; version falls back to the VERSION file.
|
||||
RUN VITE_APP_VERSION="${APP_VERSION:-$(cat ./.version)}" \
|
||||
VITE_GIT_SHA="$GIT_SHA" \
|
||||
VITE_BUILD_DATE="$BUILD_DATE" \
|
||||
npm run build
|
||||
|
||||
# Stage 2: backend runtime, serving the built SPA
|
||||
FROM python:3.12-slim
|
||||
ARG APP_VERSION
|
||||
ARG GIT_SHA
|
||||
ARG BUILD_DATE
|
||||
ENV PYTHONDONTWRITEBYTECODE=1 \
|
||||
PYTHONUNBUFFERED=1 \
|
||||
PIP_NO_CACHE_DIR=1 \
|
||||
PIP_DISABLE_PIP_VERSION_CHECK=1 \
|
||||
APP_VERSION=$APP_VERSION \
|
||||
GIT_SHA=$GIT_SHA \
|
||||
BUILD_DATE=$BUILD_DATE
|
||||
|
||||
|
|
@ -35,6 +38,8 @@ COPY backend/requirements.txt .
|
|||
RUN pip install --upgrade pip && pip install -r requirements.txt
|
||||
|
||||
COPY backend/ .
|
||||
# Read at runtime by config.py as the app_version (a committed single source of truth).
|
||||
COPY VERSION ./VERSION
|
||||
COPY --from=frontend /fe/dist ./app/static_spa
|
||||
|
||||
RUN adduser --disabled-password --gecos "" appuser && chown -R appuser /app
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue