mirror of
https://ghfast.top/https://github.com/aeroxw/tick-stock-panel.git
synced 2026-09-12 20:14:16 +08:00
.env 里 DATA_DIR=./data(为开发模式设计)经 env_file 传入容器后, 覆盖了 Dockerfile 里的 ENV DATA_DIR=/app/data。config.py 的 _project_root() 按 backend/app/config.py 三层父目录推算项目根, 但 Docker 里 COPY backend/app ./app 抹掉了 backend 这层, 文件实际 落在 /app/app/config.py, 三层父目录数到了 /(而非 /app), 相对路径 ./data 被解析成 /data —— 不在 docker-compose 挂载的 ./data:/app/data 范围内, 容器可写层不持久化, 每次 up --build 重建都会清空。 compose 的 environment 优先级高于 env_file, 显式固定 DATA_DIR 为 容器内绝对路径, 使其不受 .env 内容影响, 与 Dockerfile 原本的 「显式指定三个关键路径」意图保持一致。
25 lines
847 B
YAML
25 lines
847 B
YAML
# Phase 0 单 service:FastAPI 启动后既跑 API 又托管前端 dist。
|
|
# 见 ADR-17 / §8.1。
|
|
services:
|
|
app:
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile
|
|
args:
|
|
BACKEND_EXTRAS: ${BACKEND_EXTRAS:-}
|
|
container_name: TickFlow_Stock_Panel
|
|
ports:
|
|
- "${PORT:-3018}:3018"
|
|
env_file:
|
|
- .env
|
|
environment:
|
|
# 强制固定为容器内绝对路径, 防止 .env 里的 DATA_DIR=./data(开发模式用)
|
|
# 被 env_file 原样传入容器后按错误的相对路径解析, 写到未挂载卷的目录,
|
|
# 导致每次 up --build 重建容器都丢数据。environment 优先级高于 env_file,
|
|
# 无论 .env 怎么写这里都以容器路径为准。
|
|
- DATA_DIR=/app/data
|
|
volumes:
|
|
- ./data:/app/data
|
|
- ./tiers.yaml:/app/tiers.yaml:ro
|
|
restart: unless-stopped
|