This commit is contained in:
@@ -2,6 +2,44 @@
|
||||
|
||||
`market-data-sync` 是外部调度器触发的一次性任务。FastAPI 进程不包含定时器;PostgreSQL 是策略查询事实源,`market-data` 卷中的 CSV 只作为 qfq 落地快照和恢复介质。
|
||||
|
||||
## 环境与数据库连接
|
||||
|
||||
开发环境由 `docker-compose.dev.yml` 启动项目自带的独立 PostgreSQL,容器内连接串保持:
|
||||
|
||||
```dotenv
|
||||
ZHIXING_DATABASE_URL=postgresql://zhixing:zhixing@postgres:5432/zhixing
|
||||
```
|
||||
|
||||
生产环境不启动项目自带 PostgreSQL。现有 1Panel PostgreSQL 容器通过外部 Docker 网络 `1panel-network` 的稳定别名 `postgresql` 访问,数据库和用户均使用 `zhixing-system`。生产 `.env` 必须显式设置连接串;Compose 不会回退到开发数据库:
|
||||
|
||||
```dotenv
|
||||
ZHIXING_DATABASE_URL=postgresql://zhixing-system:<url-encoded-password>@postgresql:5432/zhixing-system?sslmode=disable
|
||||
```
|
||||
|
||||
当前服务器执行 `SHOW ssl` 的结果为 `off`,因此使用 `sslmode=disable` 或省略该参数。若日后在 1Panel/PostgreSQL 中启用 TLS,再将它改成 `sslmode=require`。密码中的 `@`、`:`、`/` 等字符必须 URL 编码。启用 TLS 后的示例如下:
|
||||
|
||||
```dotenv
|
||||
ZHIXING_DATABASE_URL=postgresql://zhixing-system:<url-encoded-password>@postgresql:5432/zhixing-system?sslmode=require
|
||||
```
|
||||
|
||||
部署前确认外部网络和数据库容器都在该网络中:
|
||||
|
||||
```bash
|
||||
docker network inspect 1panel-network --format '{{json .Containers}}'
|
||||
docker inspect 1Panel-postgresql-5Fc7 --format '{{json .NetworkSettings.Networks}}'
|
||||
```
|
||||
|
||||
迁移或同步容器连接成功后,可只输出当前连接是否使用 SSL(不会打印连接串):
|
||||
|
||||
```bash
|
||||
docker compose -f docker-compose.prod.yml --profile jobs run --rm --no-deps market-sync \
|
||||
python -c 'import psycopg; from zhixing_server.bootstrap.config import get_settings; connection=psycopg.connect(get_settings().database_url); print(connection.execute("SELECT ssl FROM pg_stat_ssl WHERE pid=pg_backend_pid()").fetchone()[0]); connection.close()'
|
||||
```
|
||||
|
||||
输出 `t` 表示当前连接使用 SSL,输出 `f` 表示未使用。本服务器当前应输出 `f`,与 `sslmode=disable` 配套;若日后要求 TLS,应先检查 PostgreSQL/1Panel 的 SSL 配置,再改用 `sslmode=require`。
|
||||
|
||||
运行时保留普通 `postgresql://` 形式供 Psycopg 3 使用;Alembic/SQLAlchemy 会自动转换为 `postgresql+psycopg://`,并保留 `sslmode` 等 query 参数。
|
||||
|
||||
## 首次部署
|
||||
|
||||
先准备 `.env`,至少设置 `ZHIXING_TUSHARE_TOKEN`、PostgreSQL 凭据和 `ZHIXING_DATABASE_URL`,然后执行迁移:
|
||||
|
||||
Reference in New Issue
Block a user