Files
asset_helper/docker-compose.dev.yml
2026-04-26 15:40:50 +08:00

192 lines
5.5 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# asset_helper —— 测试环境一键编排
#
# 使用:
# docker compose -f docker-compose.dev.yml up -d --build
#
# 与正式环境的差异:
# 1. 项目名 / 容器名 / 网络 / 数据卷 全部带 -dev 后缀,与正式完全隔离
# 2. 微服务、Postgres、Redis 端口全部暴露宿主机,便于调试
# 3. 网关、前端使用不同对外端口,可与正式环境同机并存
# 4. 敏感值JWT_SECRET、POSTGRES_PASSWORD提供默认值方便快速启动
name: asset-helper-dev
services:
# ============ 数据层 ============
user-db:
image: postgres:18.3-alpine3.23
container_name: user-db-dev
environment:
- POSTGRES_USER=${POSTGRES_USER:-postgres}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-postgres}
- POSTGRES_DB=user-db
volumes:
- user-postgres-data-dev:/var/lib/postgresql/data
- ./backend/services/user-service/migrations:/docker-entrypoint-initdb.d:ro
ports:
- "${USER_POSTGRES_PORT:-20101}:5432"
networks:
- asset-helper-dev
restart: unless-stopped
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-postgres} -d user-db"]
interval: 10s
timeout: 5s
retries: 5
user-redis:
image: redis:8.6.2-alpine
container_name: user-redis-dev
volumes:
- user-redis-data-dev:/data
ports:
- "${USER_REDIS_PORT:-20103}:6379"
networks:
- asset-helper-dev
restart: unless-stopped
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 10s
timeout: 5s
retries: 5
# ============ 用户微服务 ============
user-login-account:
build:
context: ./backend
dockerfile: services/user-service/user-login-account/Dockerfile
container_name: user-login-account-dev
environment:
- RUST_LOG=${RUST_LOG:-debug}
- DATABASE_URL=postgres://${POSTGRES_USER:-postgres}:${POSTGRES_PASSWORD:-postgres}@user-db:5432/user-db
- REDIS_URL=redis://user-redis:6379/0
- SERVICE_NAME=user-login-account
- SERVICE_PORT=8080
- JWT_SECRET=${JWT_SECRET:-dev-secret-key}
ports:
- "${USER_LOGIN_ACCOUNT_PORT:-20111}:8080"
depends_on:
user-db:
condition: service_healthy
user-redis:
condition: service_healthy
networks:
- asset-helper-dev
restart: unless-stopped
user-register-account:
build:
context: ./backend
dockerfile: services/user-service/user-register-account/Dockerfile
container_name: user-register-account-dev
environment:
- RUST_LOG=${RUST_LOG:-debug}
- DATABASE_URL=postgres://${POSTGRES_USER:-postgres}:${POSTGRES_PASSWORD:-postgres}@user-db:5432/user-db
- REDIS_URL=redis://user-redis:6379/0
- SERVICE_NAME=user-register-account
- SERVICE_PORT=8080
ports:
- "${USER_REGISTER_ACCOUNT_PORT:-20112}:8080"
depends_on:
user-db:
condition: service_healthy
user-redis:
condition: service_healthy
networks:
- asset-helper-dev
restart: unless-stopped
user-login-email:
build:
context: ./backend
dockerfile: services/user-service/user-login-email/Dockerfile
container_name: user-login-email-dev
environment:
- RUST_LOG=${RUST_LOG:-debug}
- DATABASE_URL=postgres://${POSTGRES_USER:-postgres}:${POSTGRES_PASSWORD:-postgres}@user-db:5432/user-db
- REDIS_URL=redis://user-redis:6379/0
- SERVICE_NAME=user-login-email
- SERVICE_PORT=8080
- JWT_SECRET=${JWT_SECRET:-dev-secret-key}
ports:
- "${USER_LOGIN_EMAIL_PORT:-20113}:8080"
depends_on:
user-db:
condition: service_healthy
user-redis:
condition: service_healthy
networks:
- asset-helper-dev
restart: unless-stopped
user-register-email:
build:
context: ./backend
dockerfile: services/user-service/user-register-email/Dockerfile
container_name: user-register-email-dev
environment:
- RUST_LOG=${RUST_LOG:-debug}
- DATABASE_URL=postgres://${POSTGRES_USER:-postgres}:${POSTGRES_PASSWORD:-postgres}@user-db:5432/user-db
- REDIS_URL=redis://user-redis:6379/0
- SERVICE_NAME=user-register-email
- SERVICE_PORT=8080
ports:
- "${USER_REGISTER_EMAIL_PORT:-20114}:8080"
depends_on:
user-db:
condition: service_healthy
user-redis:
condition: service_healthy
networks:
- asset-helper-dev
restart: unless-stopped
# ============ API 网关 ============
gateway:
build:
context: ./backend/gateway
dockerfile: Dockerfile
container_name: api-gateway-dev
ports:
- "${GATEWAY_HTTP_PORT:-18080}:80"
- "${GATEWAY_HTTPS_PORT:-18443}:443"
depends_on:
- user-login-account
- user-register-account
- user-login-email
- user-register-email
networks:
- asset-helper-dev
restart: unless-stopped
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost/health"]
interval: 30s
timeout: 3s
start_period: 5s
retries: 3
# ============ 前端管理后台 ============
admin-web:
build:
context: ./frontend
dockerfile: docker/Dockerfile
container_name: asset-helper-admin-dev
ports:
- "${ADMIN_WEB_PORT:-18888}:80"
depends_on:
- gateway
networks:
- asset-helper-dev
restart: unless-stopped
networks:
asset-helper-dev:
name: asset-helper-dev
driver: bridge
volumes:
user-postgres-data-dev:
name: user-postgres-data-dev
user-redis-data-dev:
name: user-redis-data-dev