# ============================================================================ # Docker 部署环境变量示例 # 用法:cp docker/.env.example docker/.env 然后改成真实值(.env 不会被提交) # 注意:本文件会被提交到仓库,只放占位符,不要写真实口令 # ============================================================================ # ---------- 数据库(MySQL)---------- MYSQL_ROOT_PASSWORD=change_me_root_password MYSQL_DATABASE=fastapiadmin MYSQL_USER=fastapiadmin MYSQL_PASSWORD=change_me_app_password MYSQL_PORT=3306 # 说明:compose 把 MySQL 端口绑定在 127.0.0.1(只对本机开放), # 容器之间通过 app_network 互联,不依赖宿主机端口。 # ---------- Redis ---------- REDIS_PASSWORD=change_me_redis_password REDIS_PORT=6379 # ---------- 后端 ---------- BACKEND_PORT=8001 # 使用的后端镜像 tag: # 3.0.0 表示「当前线上版本」(deploy-artifacts.sh 部署时写入) # mysql-<时间戳> MySQL 驱动变体 # postgres-<时间戳> PostgreSQL 驱动变体(切换数据库时手动指定) BACKEND_IMAGE_TAG=3.0.0 LOGGER_LEVEL=INFO # 运行环境,对应 backend/env/.env.{dev,prod} DEPLOY_ENV=prod # 数据库类型(仅当使用外部数据库、不靠 compose 注入时才有意义) # DATABASE_TYPE=mysql # ---------- 安全相关(生产必填,禁止留空或用示例值)---------- # 令牌签名密钥:openssl rand -hex 32 # 注意:更换该值会使所有已签发令牌失效(用户需重新登录) SECRET_KEY=change_me_generate_with_openssl_rand_hex_32 # 落库敏感数据(存储源口令、接口密钥)的加密主密钥:openssl rand -hex 32 # 留空时由 SECRET_KEY 派生;轮换步骤见 DEPLOYMENT.md 第 3 节 DATA_ENCRYPTION_KEY= # 轮换前的旧主密钥(逗号分隔),仅用于解密历史密文,验证后可清空 DATA_ENCRYPTION_OLD_KEYS= # 生产跨域白名单(逗号分隔);不配置时不再回落通配 PROD_CORS_ORIGINS=https://service.fastapiadmin.com # 只信任该网段内的反向代理传来的 X-Forwarded-*(切勿使用 *) FORWARDED_ALLOW_IPS=10.255.178.0/24 # 演示模式:true 时禁止写操作;生产需要可写请改为 false DEMO_ENABLE=true # Host 头校验范围:false 时 ALLOWED_HOSTS 只保留生产域名(不并入 localhost)。 # 容器健康检查已配置为发送正确的 Host,因此生产建议 false; # 若你的健康检查/探针确实以 Host: localhost 访问容器,再设为 true。 ALLOW_LOCALHOST_HOSTS=false # OAuth 回调与换取令牌允许的 Host。 # ⚠️ 该字段在应用里是 list[str]:必须写 **JSON 数组**,写成逗号分隔字符串会让服务启动失败 # (pydantic-settings 解析报 SettingsError,容器会不断重启)。 # 逗号分隔只适用于 str 类型字段,例如上面的 PROD_CORS_ORIGINS。 OAUTH_ALLOWED_HOSTS=["service.fastapiadmin.com","*.fastapiadmin.com"] # 生产未配置 PROD_CORS_ORIGINS 时是否直接启动失败:false=仅告警(默认),true=严格 CORS_STRICT_STARTUP=false # 定时任务是否允许执行用户提交的代码块(等同 RCE 能力,生产保持 false) SCHEDULER_ALLOW_CODE_EXEC=false # ---------- Nginx ---------- HTTP_PORT=80 HTTPS_PORT=443 # nginx 镜像版本(由 docker-compose.override.yaml 读取;留空用 1.27-alpine) NGINX_TAG=1.27-alpine # ---------- 项目 ---------- PROJECT_NAME=FastapiAdmin