The host's systemd-resolved stub (127.0.0.53) is unreachable from inside the container network namespace, so Caddy could not resolve Let's Encrypt endpoints. Point it at public resolvers instead.
86 lines
2.2 KiB
YAML
86 lines
2.2 KiB
YAML
services:
|
|
database:
|
|
image: postgres:17-alpine
|
|
restart: unless-stopped
|
|
environment:
|
|
POSTGRES_DB: ${POSTGRES_DB}
|
|
POSTGRES_USER: ${POSTGRES_USER}
|
|
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
|
|
volumes:
|
|
- postgres-data:/var/lib/postgresql/data
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 5
|
|
|
|
cms:
|
|
build: ./cms
|
|
restart: unless-stopped
|
|
depends_on:
|
|
database:
|
|
condition: service_healthy
|
|
environment:
|
|
NODE_ENV: production
|
|
HOST: 0.0.0.0
|
|
PORT: 1337
|
|
DATABASE_CLIENT: postgres
|
|
DATABASE_HOST: database
|
|
DATABASE_PORT: 5432
|
|
DATABASE_NAME: ${POSTGRES_DB}
|
|
DATABASE_USERNAME: ${POSTGRES_USER}
|
|
DATABASE_PASSWORD: ${POSTGRES_PASSWORD}
|
|
APP_KEYS: ${APP_KEYS}
|
|
API_TOKEN_SALT: ${API_TOKEN_SALT}
|
|
ADMIN_JWT_SECRET: ${ADMIN_JWT_SECRET}
|
|
TRANSFER_TOKEN_SALT: ${TRANSFER_TOKEN_SALT}
|
|
JWT_SECRET: ${JWT_SECRET}
|
|
ENCRYPTION_KEY: ${ENCRYPTION_KEY}
|
|
STRAPI_URL: https://${CMS_DOMAIN}
|
|
volumes:
|
|
- cms-uploads:/app/public/uploads
|
|
|
|
frontend:
|
|
build: ./frontend
|
|
restart: unless-stopped
|
|
depends_on:
|
|
- cms
|
|
environment:
|
|
NODE_ENV: production
|
|
HOST: 0.0.0.0
|
|
PORT: 3000
|
|
NUXT_STRAPI_URL: ${STRAPI_URL}
|
|
NUXT_PUBLIC_SITE_URL: ${PUBLIC_SITE_URL}
|
|
NUXT_PUBLIC_STRAPI_URL: ${PUBLIC_STRAPI_URL}
|
|
# Absolute origin for the alternate-language links.
|
|
NUXT_PUBLIC_I18N_BASE_URL: ${PUBLIC_SITE_URL}
|
|
|
|
caddy:
|
|
image: caddy:2-alpine
|
|
restart: unless-stopped
|
|
depends_on:
|
|
- frontend
|
|
- cms
|
|
ports:
|
|
- "80:80"
|
|
- "443:443"
|
|
# Host uses systemd-resolved (127.0.0.53), unreachable from inside the
|
|
# container network namespace; ACME lookups need a real resolver.
|
|
dns:
|
|
- 1.1.1.1
|
|
- 8.8.8.8
|
|
environment:
|
|
PUBLIC_DOMAIN: ${PUBLIC_DOMAIN}
|
|
CMS_DOMAIN: ${CMS_DOMAIN}
|
|
ACME_EMAIL: ${ACME_EMAIL}
|
|
volumes:
|
|
- ./caddy/Caddyfile:/etc/caddy/Caddyfile:ro
|
|
- caddy-data:/data
|
|
- caddy-config:/config
|
|
|
|
volumes:
|
|
postgres-data:
|
|
cms-uploads:
|
|
caddy-data:
|
|
caddy-config:
|