mirror of
https://github.com/fastapiadmin/FastapiAdmin.git
synced 2026-10-14 13:06:51 +00:00
部署方式:服务器不再接收源码、不执行构建,改为本地构建成品后交付
- deploy-artifacts.sh:构建→备份→校验→原子替换,支持回滚、镜像/备份轮转、
mysql 与 postgres 双变体镜像;后端以 docker save|ssh|docker load 交付
- 依赖分组:requirements/{base,storage}.txt + db/{mysql,postgres,sqlite}.txt,
镜像按所选数据库只装对应驱动(MySQL 变体 565MB → 521MB)
编排与运行时加固
- compose:MySQL/Redis/backend 端口仅绑 127.0.0.1;密钥(SECRET_KEY、
DATA_ENCRYPTION_KEY、DATA_ENCRYPTION_OLD_KEYS)、PROD_CORS_ORIGINS、
FORWARDED_ALLOW_IPS、DEMO_ENABLE 一律由 docker/.env 注入
- Dockerfile:对齐依赖分组、以非 root(uid=1000) 运行;.dockerignore 排除全部真实 .env.*
- nginx:静态资源长缓存、隐藏文件拒绝、接口文档仅内网可访问、放行 ACME http-01 校验路径
工程基建
- 新增 CI:backend(uv sync + ruff + pytest)与 frontend(web type-check+vitest、app type-check)
- 新增 DEPLOYMENT.md 运维手册(部署/回滚/密钥轮换/每日巡检/证书/排查)
45 lines
1.7 KiB
Bash
45 lines
1.7 KiB
Bash
# ============================================================================
|
||
# 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
|
||
|
||
# ---------- Nginx ----------
|
||
HTTP_PORT=80
|
||
HTTPS_PORT=443
|
||
# nginx 镜像版本(由 docker-compose.override.yaml 读取;留空用 1.27-alpine)
|
||
NGINX_TAG=1.27-alpine
|
||
|
||
# ---------- 项目 ----------
|
||
PROJECT_NAME=FastapiAdmin
|
||
|
||
# ---------- 部署方式 ----------
|
||
# 健康检查宽限期(秒):容器首次启动需要跑迁移,慢机器上可调大
|
||
HEALTHCHECK_START_PERIOD=40s
|