diff --git a/.env.example b/.env.example index af6c67f..25282d8 100644 --- a/.env.example +++ b/.env.example @@ -27,6 +27,11 @@ NEWAPI_BASE=http://127.0.0.1:8080 # HTTPS + 域名部署务必 true。 COOKIE_SECURE=false +# Caddy 对外端口(宿主机被占用时改这里,例如 28080 / 28443) +# 仅影响宿主机映射;容器内仍是 80/443 +HTTP_PORT=80 +HTTPS_PORT=443 + # 业务日志级别:debug | info | warning | error | fatal(访问日志另由 hono/logger 输出) LOG_LEVEL=info diff --git a/README.md b/README.md index 7818aee..3200a4a 100644 --- a/README.md +++ b/README.md @@ -105,8 +105,9 @@ docker compose up -d --build docker compose ps # migrate 应为 exited(0),其余 running/healthy ``` -- 页面:`http://<服务器>/`;接口文档:`http://<服务器>/api/docs` +- 页面:`http://<服务器>/`(若改了 `HTTP_PORT` 则加端口);接口文档:`http://<服务器>/api/docs` - 迁移:由 `migrate` 一次性服务在启动时幂等执行(journal),重复执行不会多灌 +- 端口:默认 80/443;宿主机被占用时在 `.env` 设 `HTTP_PORT` / `HTTPS_PORT`,再执行固定命令 - HTTPS:`Caddyfile` 站点行改成域名,`.env` 设 `COOKIE_SECURE=true`,再执行固定命令 ### 注意 diff --git a/docker-compose.yml b/docker-compose.yml index c85ef73..e37e516 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -88,8 +88,8 @@ services: context: . target: proxy ports: - - "80:80" - - "443:443" + - "${HTTP_PORT:-80}:80" + - "${HTTPS_PORT:-443}:443" depends_on: - server restart: unless-stopped diff --git a/docs/design/部署方案.md b/docs/design/部署方案.md index e5d4a79..d65d220 100644 --- a/docs/design/部署方案.md +++ b/docs/design/部署方案.md @@ -158,7 +158,7 @@ postgres (healthy) ──► migrate (completed successfully) ──► server 1. **`migrate` 独立服务**,而不是塞进 server 启动:语义是「部署时迁表」,避免 server/engine 双进程抢迁;`depends_on: service_completed_successfully` 保证先迁后跑。 2. **环境变量**:`DATABASE_URL` · `SK_KEY_ENCRYPTION_SECRET` · `NEWAPI_BASE` · `COOKIE_SECURE` · `LOG_LEVEL` · `SYNC_INTERVAL_MS` · 可选 `ADMIN_INIT_*`——均从 `.env` 注入 `server` / `engine`(`migrate` 只需要 `DATABASE_URL`)。 3. **`DATABASE_URL` 单源**:用户 / 密码 / 库名都写在这一串里;`entrypoint-pg.sh` 解析出 `POSTGRES_USER/PASSWORD/DB` 喂给官方库镜像,`entrypoint-app.sh` 把主机改写为 compose 服务名 `postgres`。开发与部署共用同一份 `.env` 语义。 -4. 端口:仅 `caddy` 映射 `80:80`、`443:443`;`server` / `engine` / `postgres` 均不对外。 +4. 端口:仅 `caddy` 映射到宿主机;默认 `80`/`443`,可用 `.env` 的 `HTTP_PORT` / `HTTPS_PORT` 覆盖(容器内仍为 80/443)。`server` / `engine` / `postgres` 均不对外。 5. **容器名固定**(`container_name`):`naku-postgres` / `naku-migrate` / `naku-server` / `naku-engine` / `naku-caddy`——单副本约定下使用;服务间 DNS 仍用服务名(如 `server:18456`)。 ### 5.3 `Caddyfile`