You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
91 lines
3.2 KiB
91 lines
3.2 KiB
# 在 campus-server 目录执行;仅默认启动基础设施,backend 需显式启用 app profile。
|
|
services:
|
|
mysql:
|
|
image: mysql:8.4
|
|
environment:
|
|
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:?请先设置 MYSQL_ROOT_PASSWORD}
|
|
MYSQL_DATABASE: ${DB_NAME:-qinghe_local}
|
|
MYSQL_USER: ${DB_USERNAME:-qinghe}
|
|
MYSQL_PASSWORD: ${DB_PASSWORD:?请先设置 DB_PASSWORD}
|
|
TZ: Asia/Shanghai
|
|
command: ["--character-set-server=utf8mb4", "--collation-server=utf8mb4_unicode_ci"]
|
|
ports:
|
|
- "127.0.0.1:${DB_PORT:-13306}:3306"
|
|
volumes:
|
|
- mysql-data:/var/lib/mysql
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "MYSQL_PWD=\"$$MYSQL_PASSWORD\" mysql --protocol=TCP -h 127.0.0.1 -u\"$$MYSQL_USER\" \"$$MYSQL_DATABASE\" -e 'SELECT 1' >/dev/null"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 20
|
|
start_period: 40s
|
|
redis:
|
|
image: redis:7.4-alpine
|
|
environment:
|
|
REDIS_PASSWORD: ${REDIS_PASSWORD:?请先设置 REDIS_PASSWORD}
|
|
command: ["sh", "-c", "exec redis-server --appendonly yes --requirepass \"$$REDIS_PASSWORD\""]
|
|
ports:
|
|
- "127.0.0.1:${REDIS_PORT:-16379}:6379"
|
|
volumes:
|
|
- redis-data:/data
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "REDISCLI_AUTH=\"$$REDIS_PASSWORD\" redis-cli ping | grep -q PONG"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 10
|
|
rabbitmq:
|
|
image: rabbitmq:4.1-management
|
|
environment:
|
|
RABBITMQ_DEFAULT_USER: ${RABBITMQ_USERNAME:-qinghe}
|
|
RABBITMQ_DEFAULT_PASS: ${RABBITMQ_PASSWORD:?请先设置 RABBITMQ_PASSWORD}
|
|
ports:
|
|
- "127.0.0.1:${RABBITMQ_PORT:-15672}:5672"
|
|
- "127.0.0.1:${RABBITMQ_MANAGEMENT_PORT:-15673}:15672"
|
|
volumes:
|
|
- rabbitmq-data:/var/lib/rabbitmq
|
|
healthcheck:
|
|
test: ["CMD", "rabbitmq-diagnostics", "-q", "ping"]
|
|
interval: 10s
|
|
timeout: 10s
|
|
retries: 20
|
|
start_period: 30s
|
|
backend:
|
|
profiles: ["app"]
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile
|
|
env_file:
|
|
- .env
|
|
environment:
|
|
DB_HOST: mysql
|
|
DB_PORT: "3306"
|
|
REDIS_HOST: redis
|
|
REDIS_PORT: "6379"
|
|
RABBITMQ_HOST: rabbitmq
|
|
RABBITMQ_PORT: "5672"
|
|
SERVER_PORT: "8009"
|
|
JWT_SECRET: ${JWT_SECRET:?请先设置 JWT_SECRET}
|
|
# env_file 中空值不会触发 Spring 的默认值,这里统一回落到明确的本地占位值。
|
|
OSS_ENDPOINT: ${OSS_ENDPOINT:-http://127.0.0.1:19000}
|
|
OSS_ACCESS_KEY_ID: ${OSS_ACCESS_KEY_ID:-your-local-placeholder}
|
|
OSS_ACCESS_KEY_SECRET: ${OSS_ACCESS_KEY_SECRET:-your-local-placeholder}
|
|
OSS_BUCKET_NAME: ${OSS_BUCKET_NAME:-qinghe-local-placeholder}
|
|
OSS_DOMAIN: ${OSS_DOMAIN:-http://127.0.0.1:19000}
|
|
SMS_ACCESS_KEY_ID: ${SMS_ACCESS_KEY_ID:-your-local-placeholder}
|
|
SMS_ACCESS_KEY_SECRET: ${SMS_ACCESS_KEY_SECRET:-your-local-placeholder}
|
|
SMS_SIGN_NAME: ${SMS_SIGN_NAME:-local-placeholder}
|
|
SMS_TEMPLATE_CODE: ${SMS_TEMPLATE_CODE:-local-placeholder}
|
|
SMS_REGION_ID: ${SMS_REGION_ID:-cn-hangzhou}
|
|
ports:
|
|
- "127.0.0.1:${SERVER_PORT:-8009}:8009"
|
|
depends_on:
|
|
mysql:
|
|
condition: service_healthy
|
|
redis:
|
|
condition: service_healthy
|
|
rabbitmq:
|
|
condition: service_healthy
|
|
volumes:
|
|
mysql-data:
|
|
redis-data:
|
|
rabbitmq-data:
|
|
|