94 lines
2.4 KiB
YAML
94 lines
2.4 KiB
YAML
# Harbor Desk 資料服務:Mongo + Redis + MinIO + Mailpit
|
||
# 只綁 127.0.0.1;gateway / vite 跑在宿主。
|
||
#
|
||
# docker compose --env-file deploy/.env.dev -f deploy/docker-compose.infra.yml up -d
|
||
# 或:./deploy/scripts/up-infra.sh
|
||
name: haixun-infra
|
||
|
||
services:
|
||
mongo:
|
||
image: mongo:7
|
||
restart: unless-stopped
|
||
ports:
|
||
- "127.0.0.1:${MONGO_PORT:-27017}:27017"
|
||
environment:
|
||
MONGO_INITDB_ROOT_USERNAME: ${MONGO_ROOT_USER:-haixun}
|
||
MONGO_INITDB_ROOT_PASSWORD: ${MONGO_ROOT_PASSWORD:?MONGO_ROOT_PASSWORD is required}
|
||
MONGO_INITDB_DATABASE: ${MONGO_DATABASE:-haixun}
|
||
volumes:
|
||
- mongo_data:/data/db
|
||
healthcheck:
|
||
test: ["CMD", "mongosh", "--quiet", "--eval", "db.adminCommand('ping')"]
|
||
interval: 10s
|
||
timeout: 5s
|
||
retries: 8
|
||
start_period: 25s
|
||
networks:
|
||
- haixun-infra
|
||
|
||
redis:
|
||
image: redis:7
|
||
restart: unless-stopped
|
||
command:
|
||
[
|
||
"redis-server",
|
||
"--requirepass",
|
||
"${REDIS_PASSWORD:?REDIS_PASSWORD is required}",
|
||
"--appendonly",
|
||
"yes",
|
||
]
|
||
ports:
|
||
- "127.0.0.1:${REDIS_PORT:-6379}:6379"
|
||
volumes:
|
||
- redis_data:/data
|
||
healthcheck:
|
||
test: ["CMD", "redis-cli", "-a", "${REDIS_PASSWORD}", "ping"]
|
||
interval: 10s
|
||
timeout: 5s
|
||
retries: 5
|
||
start_period: 10s
|
||
networks:
|
||
- haixun-infra
|
||
|
||
minio:
|
||
image: minio/minio:RELEASE.2025-04-22T22-12-26Z
|
||
restart: unless-stopped
|
||
command: ["server", "/data", "--console-address", ":9001"]
|
||
ports:
|
||
- "127.0.0.1:${MINIO_API_PORT:-9000}:9000"
|
||
- "127.0.0.1:${MINIO_CONSOLE_PORT:-9001}:9001"
|
||
environment:
|
||
MINIO_ROOT_USER: ${MINIO_ROOT_USER:-haixun}
|
||
MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD:?MINIO_ROOT_PASSWORD is required}
|
||
volumes:
|
||
- minio_data:/data
|
||
healthcheck:
|
||
test: ["CMD", "curl", "-f", "http://127.0.0.1:9000/minio/health/live"]
|
||
interval: 10s
|
||
timeout: 5s
|
||
retries: 5
|
||
start_period: 15s
|
||
networks:
|
||
- haixun-infra
|
||
|
||
mailpit:
|
||
image: axllent/mailpit:v1.27
|
||
restart: unless-stopped
|
||
environment:
|
||
MP_SMTP_AUTH_ACCEPT_ANY: "true"
|
||
MP_SMTP_AUTH_ALLOW_INSECURE: "true"
|
||
ports:
|
||
- "127.0.0.1:${MAILPIT_SMTP_PORT:-1025}:1025"
|
||
- "${MAILPIT_UI_PORT:-8025}:8025"
|
||
networks:
|
||
- haixun-infra
|
||
|
||
volumes:
|
||
mongo_data:
|
||
redis_data:
|
||
minio_data:
|
||
|
||
networks:
|
||
haixun-infra:
|
||
name: haixun-infra
|