services: caddy: image: caddy:alpine ports: - "80:80" - "443:443" volumes: - ./public:/srv - ./Caddyfile:/etc/caddy/Caddyfile networks: - our postgres: container_name: our-postgres image: postgres:17 restart: unless-stopped environment: POSTGRES_USER: ${DB_USER} POSTGRES_PASSWORD: ${DB_PASSWORD} POSTGRES_DB: ${DB_NAME} ports: - "5432:5432" volumes: - pgdata:/var/lib/postgresql/data healthcheck: test: ["CMD", "pg_isready", "-U", "postgres"] interval: 10s retries: 5 start_period: 10s timeout: 10s networks: - our pgadmin: image: dpage/pgadmin4:latest environment: PGADMIN_LISTEN_PORT: 5050 PGADMIN_DEFAULT_EMAIL: ${PGADMIN_DEFAULT_EMAIL} PGADMIN_DEFAULT_PASSWORD: ${PGADMIN_DEFAULT_PASSWORD} PGADMIN_DISABLE_POSTFIX: true ports: - "5050:5050" networks: - our our: image: gitea.futureporn.net/futureporn/our:latest container_name: our-app ports: - "5000:5000" env_file: .env.production ## @see ./src/config/env.ts for all env var names. depends_on: postgres: condition: service_healthy network: - our volumes: pgdata: networks: our: