version: '3.8' services: db: image: postgres:15-alpine container_name: m-project-db environment: POSTGRES_USER: mproject POSTGRES_PASSWORD: mproject2024 POSTGRES_DB: mproject TZ: Asia/Seoul PGTZ: Asia/Seoul volumes: - postgres_data:/var/lib/postgresql/data - ./backend/migrations:/docker-entrypoint-initdb.d ports: - "16432:5432" networks: - m-project-network restart: unless-stopped backend: build: ./backend container_name: m-project-backend environment: DATABASE_URL: postgresql://mproject:mproject2024@db:5432/mproject SECRET_KEY: your-secret-key-here-change-in-production ALGORITHM: HS256 ACCESS_TOKEN_EXPIRE_MINUTES: 10080 # 7 days ADMIN_USERNAME: hyungi ADMIN_PASSWORD: "123456" TZ: Asia/Seoul volumes: - ./backend:/app - uploads:/app/uploads ports: - "0.0.0.0:16000:8000" # 모든 IP에서 접근 허용 depends_on: - db networks: - m-project-network restart: unless-stopped command: uvicorn main:app --host 0.0.0.0 --port 8000 --reload nginx: build: ./nginx container_name: m-project-nginx ports: - "16080:80" volumes: - ./frontend:/usr/share/nginx/html - uploads:/usr/share/nginx/html/uploads depends_on: - backend networks: - m-project-network restart: unless-stopped volumes: postgres_data: uploads: networks: m-project-network: driver: bridge