26 lines
1.1 KiB
Docker
26 lines
1.1 KiB
Docker
# Static-only Caddy 2 image for ui.suaveplan.com.
|
|
#
|
|
# No build step — the registry and Storybook trees are bind-mounted at
|
|
# runtime from /srv/registry on the OVH host. Image carries only the
|
|
# Caddy binary plus the validated Caddyfile.
|
|
|
|
FROM caddy:2-alpine
|
|
|
|
# wget is in the base image; used by HEALTHCHECK below.
|
|
COPY Caddyfile /etc/caddy/Caddyfile
|
|
|
|
# Validate Caddyfile at build time so a syntactically broken config
|
|
# fails the image build, not the deploy.
|
|
RUN caddy validate --config /etc/caddy/Caddyfile --adapter caddyfile
|
|
|
|
# Caddy needs both ports for ACME HTTP-01 challenge + HTTPS serve.
|
|
EXPOSE 80 443
|
|
|
|
# Health probe hits the static /health endpoint defined in the Caddyfile.
|
|
# Uses --no-check-certificate because the cert is for ui.suaveplan.com
|
|
# but the probe targets 127.0.0.1 inside the container — TLS chain
|
|
# validation is not the contract being checked here, response body is.
|
|
# 30 s interval, 10 s timeout, 3 retries before unhealthy.
|
|
HEALTHCHECK --interval=30s --timeout=10s --start-period=15s --retries=3 \
|
|
CMD wget -q -O- --no-check-certificate https://127.0.0.1/health | grep -q '^ok$' || exit 1
|