2026-07-07 14:02:41 +00:00
|
|
|
|
# 巡樓資料服務:Mongo + Redis + MinIO + Mailpit
|
2026-06-29 16:11:08 +00:00
|
|
|
|
# 只綁 127.0.0.1,給同主機上以 systemd 跑的 Go gateway / worker 連線。
|
2026-07-06 06:13:14 +00:00
|
|
|
|
# 啟動(dev):make dev-infra # 讀 deploy/.env.dev
|
|
|
|
|
|
# 啟動(prod):make prod-infra # 讀 deploy/.env.prod
|
2026-06-29 16:11:08 +00:00
|
|
|
|
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: 5
|
|
|
|
|
|
start_period: 20s
|
2026-07-06 06:13:14 +00:00
|
|
|
|
networks:
|
|
|
|
|
|
- haixun-infra
|
2026-06-29 16:11:08 +00:00
|
|
|
|
|
|
|
|
|
|
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
|
2026-07-06 06:13:14 +00:00
|
|
|
|
networks:
|
|
|
|
|
|
- haixun-infra
|
2026-06-29 16:11:08 +00:00
|
|
|
|
|
2026-07-07 14:02:41 +00:00
|
|
|
|
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", "mc", "ready", "local"]
|
|
|
|
|
|
interval: 10s
|
|
|
|
|
|
timeout: 5s
|
|
|
|
|
|
retries: 5
|
|
|
|
|
|
start_period: 10s
|
|
|
|
|
|
networks:
|
|
|
|
|
|
- haixun-infra
|
|
|
|
|
|
|
|
|
|
|
|
mailpit:
|
|
|
|
|
|
image: axllent/mailpit:v1.27
|
|
|
|
|
|
restart: unless-stopped
|
2026-07-10 12:54:45 +00:00
|
|
|
|
# 本機假信箱;SMTP 介面與 Mailgun SMTP 相容(Host/Port/User/Pass)
|
|
|
|
|
|
# apps/backend 預設連 127.0.0.1:1025;UI http://127.0.0.1:8025
|
|
|
|
|
|
environment:
|
|
|
|
|
|
# 允許任意 AUTH(方便本機模擬 Mailgun 帶 User/Password 的 SMTP)
|
|
|
|
|
|
MP_SMTP_AUTH_ACCEPT_ANY: "true"
|
|
|
|
|
|
MP_SMTP_AUTH_ALLOW_INSECURE: "true"
|
2026-07-07 14:02:41 +00:00
|
|
|
|
ports:
|
2026-07-09 03:45:28 +00:00
|
|
|
|
# SMTP 只給本機 gateway 投遞;Web UI 開區網方便用手機/另一台電腦看信
|
2026-07-07 14:02:41 +00:00
|
|
|
|
- "127.0.0.1:${MAILPIT_SMTP_PORT:-1025}:1025"
|
2026-07-09 03:45:28 +00:00
|
|
|
|
- "${MAILPIT_UI_PORT:-8025}:8025"
|
2026-07-07 14:02:41 +00:00
|
|
|
|
networks:
|
|
|
|
|
|
- haixun-infra
|
|
|
|
|
|
|
2026-06-29 16:11:08 +00:00
|
|
|
|
volumes:
|
|
|
|
|
|
mongo_data:
|
|
|
|
|
|
redis_data:
|
2026-07-07 14:02:41 +00:00
|
|
|
|
minio_data:
|
2026-07-06 06:13:14 +00:00
|
|
|
|
|
|
|
|
|
|
networks:
|
|
|
|
|
|
haixun-infra:
|
|
|
|
|
|
name: haixun-infra
|