services: web: build: context: ./apps/web dockerfile: Dockerfile environment: NODE_ENV: production PORT: 3000 DATABASE_URL: ${DATABASE_URL} NEXT_PUBLIC_SITE_URL: ${NEXT_PUBLIC_SITE_URL:-https://prompt.ncue.net} restart: unless-stopped networks: - allprompt caddy: image: caddy:2 ports: - "80:80" - "443:443" volumes: - ./Caddyfile:/etc/caddy/Caddyfile:ro - caddy_data:/data - caddy_config:/config environment: CADDY_EMAIL: ${CADDY_EMAIL} depends_on: - web restart: unless-stopped networks: - allprompt # 1회성: 스키마 적용(필요할 때만) db_init: image: postgres:16 profiles: ["init"] volumes: - ./apps/web/db/schema.sql:/schema.sql:ro environment: PGHOST: ${PGHOST:-ncue.net} PGDATABASE: ${PGDATABASE:-all_prompt} PGUSER: ${PGUSER:-ncue} PGPASSWORD: ${PGPASSWORD} entrypoint: ["/bin/bash", "-lc"] command: ["psql -v ON_ERROR_STOP=1 -f /schema.sql"] networks: - allprompt # 1회성: 시드 데이터(필요할 때만) db_seed: build: context: ./apps/web dockerfile: Dockerfile profiles: ["init"] environment: NODE_ENV: production DATABASE_URL: ${DATABASE_URL} entrypoint: ["/bin/bash", "-lc"] command: ["node -e \"console.log('Seeding...')\" && npx prisma db seed --schema prisma/schema.prisma"] networks: - allprompt networks: allprompt: driver: bridge volumes: caddy_data: caddy_config: