fleet-platform/Dockerfile
kianiadee 5c07499e99 Bake git SHA into image so /health reports it under Coolify source builds
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-29 00:39:07 +03:00

65 lines
1.8 KiB
Docker

# syntax=docker/dockerfile:1.7
ARG PYTHON_VERSION=3.12-slim
# Resolve the git SHA from the build context's .git checkout. Coolify builds
# from source and sets SOURCE_COMMIT to the literal "unknown", so the CI
# GIT_SHA build-arg isn't present on those builds — this stage recovers it.
FROM python:${PYTHON_VERSION} AS gitsha
WORKDIR /src
RUN apt-get update \
&& apt-get install -y --no-install-recommends git \
&& rm -rf /var/lib/apt/lists/*
COPY .git ./.git
RUN git rev-parse --short=12 HEAD > /git_sha 2>/dev/null || echo unknown > /git_sha
FROM python:${PYTHON_VERSION} AS builder
ENV PYTHONDONTWRITEBYTECODE=1 \
PYTHONUNBUFFERED=1 \
PIP_NO_CACHE_DIR=1 \
PIP_DISABLE_PIP_VERSION_CHECK=1
WORKDIR /build
RUN apt-get update \
&& apt-get install -y --no-install-recommends build-essential libpq-dev \
&& rm -rf /var/lib/apt/lists/*
COPY pyproject.toml README.md ./
COPY app/ ./app/
RUN python -m venv /opt/venv \
&& /opt/venv/bin/pip install --upgrade pip \
&& /opt/venv/bin/pip install .
FROM python:${PYTHON_VERSION} AS runtime
ARG GIT_SHA=unknown
ENV PYTHONDONTWRITEBYTECODE=1 \
PYTHONUNBUFFERED=1 \
PATH="/opt/venv/bin:${PATH}" \
APP_GIT_SHA=${GIT_SHA}
RUN apt-get update \
&& apt-get install -y --no-install-recommends libpq5 curl \
&& rm -rf /var/lib/apt/lists/* \
&& useradd --create-home --shell /bin/sh --uid 1000 app
COPY --from=builder /opt/venv /opt/venv
COPY --from=gitsha /git_sha /etc/git_sha
WORKDIR /srv/app
COPY app/ ./app/
COPY web/ /srv/web/
COPY scripts/entrypoint.sh /usr/local/bin/entrypoint.sh
RUN chmod +x /usr/local/bin/entrypoint.sh \
&& chown -R app:app /srv/app /srv/web
USER app
EXPOSE 8000
HEALTHCHECK --interval=15s --timeout=3s --start-period=5s --retries=3 \
CMD curl -fsS http://127.0.0.1:8000/health/${APP_ROLE:-gateway} || exit 1
ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]