version: '3.8' services: # PostgreSQL 数据库 (开发环境) postgres: image: postgres:15-alpine container_name: photography_postgres_dev environment: POSTGRES_DB: photography_dev POSTGRES_USER: postgres POSTGRES_PASSWORD: dev_password POSTGRES_INITDB_ARGS: "--encoding=UTF-8 --lc-collate=C --lc-ctype=C" ports: - "5432:5432" volumes: - postgres_dev_data:/var/lib/postgresql/data - ./migrations:/docker-entrypoint-initdb.d networks: - photography_dev_network restart: unless-stopped # Redis 缓存 (开发环境) redis: image: redis:7-alpine container_name: photography_redis_dev ports: - "6379:6379" volumes: - redis_dev_data:/data networks: - photography_dev_network restart: unless-stopped command: redis-server --appendonly yes # 后端 API 服务 (开发环境) backend: build: context: . dockerfile: Dockerfile target: builder container_name: photography_backend_dev environment: # 数据库配置 DB_HOST: postgres DB_PORT: 5432 DB_USER: postgres DB_PASSWORD: dev_password DB_NAME: photography_dev DB_SSL_MODE: disable # Redis 配置 REDIS_HOST: redis REDIS_PORT: 6379 REDIS_PASSWORD: "" REDIS_DB: 0 # JWT 配置 JWT_SECRET: dev-jwt-secret-key JWT_EXPIRES_IN: 24h # 服务器配置 PORT: 8080 GIN_MODE: debug # 文件上传配置 UPLOAD_TYPE: local UPLOAD_PATH: /app/uploads UPLOAD_BASE_URL: http://localhost:8080/uploads UPLOAD_MAX_SIZE: 10485760 # 10MB # 日志配置 LOG_LEVEL: debug LOG_FORMAT: console ports: - "8080:8080" volumes: - .:/app - upload_dev_data:/app/uploads - go_mod_cache:/go/pkg/mod networks: - photography_dev_network depends_on: - postgres - redis restart: unless-stopped command: go run cmd/server/main.go # 管理后台前端 (开发环境) admin: build: context: ../admin dockerfile: Dockerfile.dev container_name: photography_admin_dev environment: VITE_API_BASE_URL: http://localhost:8080/api ports: - "3000:3000" volumes: - ../admin:/app - /app/node_modules networks: - photography_dev_network depends_on: - backend restart: unless-stopped profiles: - admin # 数据卷 volumes: postgres_dev_data: driver: local redis_dev_data: driver: local upload_dev_data: driver: local go_mod_cache: driver: local # 网络 networks: photography_dev_network: driver: bridge