65 lines
2.3 KiB
Markdown
65 lines
2.3 KiB
Markdown
# 本機依賴(Docker Compose)
|
||
|
||
Gateway 啟用 **Notification** / **Member OTP** 需要:
|
||
|
||
| 服務 | 用途 | 預設埠 |
|
||
|------|------|--------|
|
||
| **MongoDB** | `notifications`、`notification_dlq` collections | 27017 |
|
||
| **Redis** | 冪等、配額、異步重試佇列、member OTP challenge | 6379 |
|
||
| MailHog(選用) | 本機 SMTP 測試 | 1025 / 8025 |
|
||
| OpenLDAP(`make ldap-up` / `make k6-up`) | ZITADEL LDAP IdP 本機目錄 | 389 |
|
||
| ZITADEL(`make k6-up`) | OIDC / Social / LDAP 登入 | 8080 |
|
||
|
||
Mongo **不需要**事先手動建 collection;應用程式寫入時會自動建立。索引由 init script 或 `make mongo-index` 建立。
|
||
|
||
## 快速開始
|
||
|
||
```bash
|
||
# 1. 啟動 Mongo + Redis
|
||
make deps-up
|
||
|
||
# 2.(選用)含 MailHog
|
||
make deps-up-smtp
|
||
|
||
# 3. 確認索引(首次 docker volume 通常已由 init 建立;可再跑一次保險)
|
||
make mongo-index
|
||
|
||
# 4. 啟動 Gateway(使用 etc/gateway.dev.yaml)
|
||
make run-dev
|
||
```
|
||
|
||
## Mongo collections
|
||
|
||
| Collection | 模組 | 說明 |
|
||
|------------|------|------|
|
||
| `notifications` | notification | 發送紀錄、冪等 |
|
||
| `notification_dlq` | notification | 超過 MaxRetry 的死信 |
|
||
|
||
索引定義見 [`deploy/mongo/init/01-gateway-indexes.js`](mongo/init/01-gateway-indexes.js),與 Go 的 `Index20260520001UP` 一致。
|
||
|
||
## 常用指令
|
||
|
||
```bash
|
||
make deps-up # docker compose up -d mongo redis
|
||
make deps-up-smtp # 再加上 mailhog(profile smtp)
|
||
make ldap-up # 只起 OpenLDAP(profile ldap)
|
||
make k6-up # 全棧含 OpenLDAP + ZITADEL(見 deploy/zitadel、deploy/openldap README)
|
||
make ldap-test # 確認 LDAP 測試帳號 alice/bob
|
||
make deps-down # 停止並移除容器(保留 volume)
|
||
make deps-down-v # 停止並刪除 volume(會清掉 Mongo 資料)
|
||
make deps-logs # 查看 log
|
||
make mongo-index # 手動建立/補齊索引
|
||
```
|
||
|
||
LDAP 本機測試:[deploy/openldap/README.md](openldap/README.md)
|
||
|
||
## 連線設定
|
||
|
||
設定說明:[`etc/README.md`](../etc/README.md)
|
||
|
||
| 檔案 | 用途 |
|
||
|------|------|
|
||
| [`etc/gateway.yaml`](../etc/gateway.yaml) | 預設,無需 Docker |
|
||
| [`etc/gateway.dev.example.yaml`](../etc/gateway.dev.example.yaml) | 範例(可提交) |
|
||
| `etc/gateway.dev.yaml` | 本機專用(**勿提交**,見 `.gitignore`) |
|