63 lines
1.9 KiB
YAML
63 lines
1.9 KiB
YAML
services:
|
|
postgres:
|
|
image: postgres:17-alpine
|
|
container_name: certremind-postgres
|
|
environment:
|
|
POSTGRES_DB: certremind
|
|
POSTGRES_USER: certremind
|
|
POSTGRES_PASSWORD: certremind
|
|
volumes:
|
|
- postgres-data:/var/lib/postgresql/data
|
|
- ./db/schema.sql:/docker-entrypoint-initdb.d/001-schema.sql:ro
|
|
healthcheck:
|
|
test: ['CMD-SHELL', 'pg_isready -U certremind -d certremind']
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 5
|
|
ports:
|
|
- '127.0.0.1:54320:5432'
|
|
|
|
app:
|
|
build: .
|
|
image: certremind-app:local
|
|
container_name: certremind-app
|
|
environment:
|
|
NODE_ENV: production
|
|
HOST: 0.0.0.0
|
|
PORT: 3000
|
|
DATABASE_URL: postgres://certremind:certremind@postgres:5432/certremind
|
|
COOKIE_SECRET: ${COOKIE_SECRET:-replace-with-a-long-random-string}
|
|
VAPID_PUBLIC_KEY: ${VAPID_PUBLIC_KEY:-}
|
|
VAPID_PRIVATE_KEY: ${VAPID_PRIVATE_KEY:-}
|
|
VAPID_SUBJECT: ${VAPID_SUBJECT:-mailto:admin@example.com}
|
|
OPENSSL_PATH: ${OPENSSL_PATH:-openssl}
|
|
CAPTCHA_PROVIDER: ${CAPTCHA_PROVIDER:-off}
|
|
CAPTCHA_SITE_KEY: ${CAPTCHA_SITE_KEY:-}
|
|
CAPTCHA_SECRET_KEY: ${CAPTCHA_SECRET_KEY:-}
|
|
CAPTCHA_VERIFY_TIMEOUT_MS: ${CAPTCHA_VERIFY_TIMEOUT_MS:-3000}
|
|
ports:
|
|
- '127.0.0.1:3000:3000'
|
|
depends_on:
|
|
postgres:
|
|
condition: service_healthy
|
|
|
|
monitor-worker:
|
|
image: certremind-app:local
|
|
container_name: certremind-monitor-worker
|
|
command: ['pnpm', 'monitor:worker']
|
|
environment:
|
|
NODE_ENV: production
|
|
DATABASE_URL: postgres://certremind:certremind@postgres:5432/certremind
|
|
VAPID_PUBLIC_KEY: ${VAPID_PUBLIC_KEY:-}
|
|
VAPID_PRIVATE_KEY: ${VAPID_PRIVATE_KEY:-}
|
|
VAPID_SUBJECT: ${VAPID_SUBJECT:-mailto:admin@example.com}
|
|
OPENSSL_PATH: ${OPENSSL_PATH:-openssl}
|
|
depends_on:
|
|
postgres:
|
|
condition: service_healthy
|
|
app:
|
|
condition: service_started
|
|
|
|
volumes:
|
|
postgres-data:
|