services: postgres: image: postgres:18-alpine container_name: galaxis-po-db environment: POSTGRES_USER: ${DB_USER:-galaxy} POSTGRES_PASSWORD: ${DB_PASSWORD:-devpassword} POSTGRES_DB: ${DB_NAME:-galaxy_po} volumes: - postgres_data:/var/lib/postgresql/data ports: - "5432:5432" healthcheck: test: ["CMD-SHELL", "pg_isready -U ${DB_USER:-galaxy} -d ${DB_NAME:-galaxy_po}"] interval: 5s timeout: 5s retries: 5 restart: unless-stopped backend: build: context: ./backend dockerfile: Dockerfile container_name: galaxis-po-backend env_file: - .env environment: DATABASE_URL: postgresql://${DB_USER:-galaxy}:${DB_PASSWORD:-devpassword}@postgres:5432/${DB_NAME:-galaxy_po} JWT_SECRET: ${JWT_SECRET:-dev-jwt-secret-change-in-production} KIS_APP_KEY: ${KIS_APP_KEY:-} KIS_APP_SECRET: ${KIS_APP_SECRET:-} KIS_ACCOUNT_NO: ${KIS_ACCOUNT_NO:-} DART_API_KEY: ${DART_API_KEY:-} PYTHONPATH: /app ports: - "8000:8000" depends_on: postgres: condition: service_healthy healthcheck: test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:8000/health')"] interval: 30s timeout: 10s start_period: 10s retries: 3 restart: unless-stopped frontend: build: context: ./frontend dockerfile: Dockerfile target: development container_name: galaxis-po-frontend environment: BACKEND_URL: http://backend:8000 ports: - "3000:3000" depends_on: backend: condition: service_healthy volumes: - ./frontend:/app - /app/node_modules - /app/.next restart: unless-stopped volumes: postgres_data: driver: local