version: "3.9" services: db: image: postgres:16 container_name: vtuber-db environment: - POSTGRES_DB=vtuber - POSTGRES_USER=postgres - POSTGRES_PASSWORD=vtuber_local_pwd volumes: - vtuber-pg-data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U postgres -d vtuber"] interval: 5s timeout: 5s retries: 10 restart: always api: build: context: .. dockerfile: apps/api/Dockerfile container_name: vtuber-api depends_on: db: condition: service_healthy environment: - NODE_ENV=production - PORT=${API_PORT:-4000} - DATABASE_URL=${DATABASE_URL} ports: - "${API_PORT:-4000}:4000" restart: always web: build: context: .. dockerfile: apps/web/Dockerfile container_name: vtuber-web depends_on: - api environment: - NODE_ENV=production - NEXT_PUBLIC_API_BASE_URL=http://api:4000/api - NEXT_PUBLIC_APP_DOMAIN=${APP_DOMAIN} - PORT=3000 ports: - "${WEB_PORT:-3200}:3000" restart: always admin: build: context: .. dockerfile: apps/admin/Dockerfile container_name: vtuber-admin depends_on: - api environment: - NODE_ENV=production - NEXT_PUBLIC_API_BASE_URL=http://api:4000/api - NEXT_PUBLIC_APP_DOMAIN=${APP_DOMAIN} - PORT=3001 ports: - "${ADMIN_PORT:-3201}:3001" restart: always volumes: vtuber-pg-data: