services: db: image: postgres:15 restart: unless-stopped environment: POSTGRES_USER: ${POSTGRES_USER} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} POSTGRES_DB: ${POSTGRES_DB} volumes: - db_data:/var/lib/postgresql/data networks: - acs-net app: build: context: ../backend dockerfile: Dockerfile image: acs-app:local restart: unless-stopped environment: SPRING_PROFILES_ACTIVE: prod POSTGRES_HOST: db POSTGRES_PORT: 5432 POSTGRES_DB: ${POSTGRES_DB} POSTGRES_USER: ${POSTGRES_USER} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} # Pass delivery (dev = log only; hanbank = real LMS via DMZ API) ACS_SMS_PROVIDER: ${ACS_SMS_PROVIDER:-dev} ACS_SMS_API_URL: ${ACS_SMS_API_URL:-http://210.104.132.59:8000} ACS_PUBLIC_BASE_URL: ${ACS_PUBLIC_BASE_URL:-http://localhost} # Security: CORS origins (empty = same-origin via nginx); cookie Secure (enable under HTTPS) ACS_CORS_ALLOWED_ORIGINS: ${ACS_CORS_ALLOWED_ORIGINS:-} ACS_COOKIE_SECURE: ${ACS_COOKIE_SECURE:-false} # Email pass delivery (used when ACS_SMS_PROVIDER=email) ACS_MAIL_FROM: ${ACS_MAIL_FROM:-dept_itcm000@bok.or.kr} ACS_MAIL_HOST: ${ACS_MAIL_HOST:-} ACS_MAIL_PORT: ${ACS_MAIL_PORT:-25} ACS_MAIL_USERNAME: ${ACS_MAIL_USERNAME:-} ACS_MAIL_PASSWORD: ${ACS_MAIL_PASSWORD:-} ACS_MAIL_SMTP_AUTH: ${ACS_MAIL_SMTP_AUTH:-false} ACS_MAIL_STARTTLS: ${ACS_MAIL_STARTTLS:-false} depends_on: - db networks: - acs-net web: build: context: ../frontend dockerfile: Dockerfile image: acs-web:local restart: unless-stopped ports: - "${WEB_PORT:-80}:80" depends_on: - app networks: - acs-net # One-shot user seeder (run manually): docker compose run --rm seed seed: image: python:3.12-slim profiles: ["tools"] working_dir: /work volumes: - ..:/work:rw environment: PGHOST: db PGPORT: 5432 PGUSER: ${POSTGRES_USER} PGPASSWORD: ${POSTGRES_PASSWORD} PGDATABASE: ${POSTGRES_DB} entrypoint: ["/bin/sh", "-c"] command: ["pip install -q -r scripts/requirements.txt && python scripts/seed-load.py --file scripts/seeds/users.csv"] depends_on: - db networks: - acs-net volumes: db_data: networks: acs-net: