Files
watermaps/deploy/release.Dockerfile
BuTzZ 2064570913
Test and publish container images / test (push) Successful in 2m43s
Test and publish container images / publish (push) Successful in 2m56s
Automate immutable production deployments
2026-07-29 13:00:50 +02:00

58 lines
1.7 KiB
Docker

FROM alpine@sha256:14358309a308569c32bdc37e2e0e9694be33a9d99e68afb0f5ff33cc1f695dce AS bundle
ARG REVISION
ARG SOURCE
ARG APP_IMAGE
ARG ROUTE_DATA_IMAGE
WORKDIR /release
COPY deploy/compose.production.yml /release/deploy/compose.production.yml
COPY deploy/nginx /release/deploy/nginx
COPY deploy/scripts /release/deploy/scripts
COPY deploy/systemd /release/deploy/systemd
COPY database /release/database
RUN set -eu; \
case "$REVISION" in \
*[!0-9a-f]*|'') exit 1 ;; \
esac; \
test "${#REVISION}" -eq 40; \
app_digest="${APP_IMAGE##*@sha256:}"; \
route_digest="${ROUTE_DATA_IMAGE##*@sha256:}"; \
test "$app_digest" != "$APP_IMAGE"; \
test "$route_digest" != "$ROUTE_DATA_IMAGE"; \
case "$app_digest" in \
*[!0-9a-f]*|'') exit 1 ;; \
esac; \
case "$route_digest" in \
*[!0-9a-f]*|'') exit 1 ;; \
esac; \
test "${#app_digest}" -eq 64; \
test "${#route_digest}" -eq 64; \
printf '%s\n' \
"format_version=1" \
"revision=$REVISION" \
"source=$SOURCE" \
"app_image=$APP_IMAGE" \
"route_data_image=$ROUTE_DATA_IMAGE" \
> release.env; \
{ \
sha256sum release.env; \
find deploy database -type f -print | LC_ALL=C sort | xargs sha256sum; \
} > SHA256SUMS
FROM scratch
ARG REVISION
ARG SOURCE
LABEL org.opencontainers.image.title="Watermaps production release bundle" \
org.opencontainers.image.description="Versioned deployment files, exact image digests and database migrations for Watermaps" \
org.opencontainers.image.revision="${REVISION}" \
org.opencontainers.image.source="${SOURCE}"
COPY --from=bundle /release /release
CMD ["/release/deploy/scripts/deploy.sh"]