58 lines
1.7 KiB
Docker
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"]
|