# Soapbox – lettest mulig image: python:alpine + git + appen. # Bygg (fra repo-rot): # BUILDAH_FORMAT=docker podman build \ # --build-arg BUILD_DATE="$(date -u +%Y-%m-%dT%H:%M:%SZ)" \ # --build-arg GIT_REVISION="$(git describe --always --dirty)" \ # -t soapbox . FROM python:3.13-alpine AS build COPY --from=ghcr.io/astral-sh/uv:latest /uv /bin/uv WORKDIR /app ENV UV_COMPILE_BYTECODE=1 UV_LINK_MODE=copy UV_PYTHON_DOWNLOADS=never COPY pyproject.toml uv.lock README.md ./ RUN uv sync --frozen --no-dev --no-install-project COPY soapbox ./soapbox RUN uv sync --frozen --no-dev FROM python:3.13-alpine ARG BUILD_DATE ARG GIT_REVISION LABEL org.opencontainers.image.title="soapbox" \ org.opencontainers.image.created="${BUILD_DATE}" \ org.opencontainers.image.revision="${GIT_REVISION}" RUN apk add --no-cache git curl \ && printf 'build_date=%s\ngit_revision=%s\n' "${BUILD_DATE}" "${GIT_REVISION}" > /etc/build-info \ && adduser -D -u 1000 soapbox \ && mkdir -p /data && chown soapbox:soapbox /data WORKDIR /app COPY --from=build --chown=soapbox:soapbox /app /app USER soapbox ENV PATH="/app/.venv/bin:$PATH" \ SOAPBOX_DATA_DIR=/data \ PYTHONUNBUFFERED=1 VOLUME /data EXPOSE 8080 HEALTHCHECK --interval=30s --timeout=3s CMD curl -fsS http://localhost:8080/ >/dev/null || exit 1 CMD ["soapbox", "serve"]