version: '3.8' services: postgres: image: postgres:15-alpine container_name: galaxy-po-db environment: POSTGRES_USER: galaxy POSTGRES_PASSWORD: ${DB_PASSWORD:-devpassword} POSTGRES_DB: galaxy_po volumes: - postgres_data:/var/lib/postgresql/data ports: - "5432:5432" healthcheck: test: ["CMD-SHELL", "pg_isready -U galaxy -d galaxy_po"] interval: 5s timeout: 5s retries: 5 backend: build: context: ./backend dockerfile: Dockerfile container_name: galaxy-po-backend environment: DATABASE_URL: postgresql://galaxy:${DB_PASSWORD:-devpassword}@postgres:5432/galaxy_po JWT_SECRET: ${JWT_SECRET:-dev-jwt-secret-change-in-production} KIS_APP_KEY: ${KIS_APP_KEY:-} KIS_APP_SECRET: ${KIS_APP_SECRET:-} DART_API_KEY: ${DART_API_KEY:-} ports: - "8000:8000" depends_on: postgres: condition: service_healthy volumes: - ./backend:/app command: uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload frontend: build: context: ./frontend dockerfile: Dockerfile container_name: galaxy-po-frontend environment: NEXT_PUBLIC_API_URL: http://localhost:8000 ports: - "3000:3000" depends_on: - backend volumes: - ./frontend:/app - /app/node_modules - /app/.next volumes: postgres_data: