# Phase 0 单 service:FastAPI 启动后既跑 API 又托管前端 dist。 # 见 ADR-17 / §8.1。 services: app: build: context: . dockerfile: Dockerfile args: BACKEND_EXTRAS: ${BACKEND_EXTRAS:-} CODEX_CLI_VERSION: ${CODEX_CLI_VERSION:-0.144.3} container_name: TickFlow_Stock_Panel ports: - "${PORT:-3018}:3018" extra_hosts: - "host.docker.internal:host-gateway" env_file: - .env environment: # 强制固定为容器内绝对路径, 防止 .env 里的 DATA_DIR=./data(开发模式用) # 被 env_file 原样传入容器后按错误的相对路径解析, 写到未挂载卷的目录, # 导致每次 up --build 重建容器都丢数据。environment 优先级高于 env_file, # 无论 .env 怎么写这里都以容器路径为准。 - DATA_DIR=/app/data # 将主机 Codex Desktop 的 loopback local-access 端点映射到 Docker host gateway。 - CODEX_DOCKER_HOST=host.docker.internal volumes: - ./data:/app/data - ./tiers.yaml:/app/tiers.yaml:ro # 复用主机 Codex 登录态;后端只读后复制到单次请求的临时 CODEX_HOME。 - ${HOME}/.codex:/root/.codex:ro restart: unless-stopped