502 字
3 分钟
Frappe Docker 本地开发命令速查
这篇从 frappe_docker 项目文档整理,主要用于本地开发时复制命令。
开发模式启动
使用 noproxy,直接暴露端口:
docker compose \ -f compose.yaml \ -f overrides/compose.redis.yaml \ -f overrides/compose.mariadb.yaml \ -f overrides/compose.noproxy.yaml \ up -d如果项目里有封装脚本:
./start-dev.sh生产模式启动
Traefik + HTTPS:
docker compose \ -f compose.yaml \ -f overrides/compose.redis.yaml \ -f overrides/compose.mariadb.yaml \ -f overrides/compose.traefik.yaml \ -f overrides/compose.https.yaml \ up -d如果项目里有封装脚本:
./start-prod.sh停止服务
docker compose down或者:
./stop.sh进入 backend 容器
docker compose exec backend bash创建新站点
在容器内执行:
bench new-site \ --mariadb-user-host-login-scope=% \ --db-root-password <db-root-password> \ --admin-password <admin-password> \ sitename.localhost注意把密码和站点名换成自己的值。
migrate
docker compose exec backend bench --site sitename.localhost migrate进入 bench console
docker compose exec backend bench --site sitename.localhost console查看日志
docker compose logs -f backenddocker compose logs -f frontenddocker compose logs -f websocketdocker compose logs -f queue-shortdocker compose logs -f queue-longdocker compose logs -f scheduler重启单个服务
docker compose restart backenddocker compose restart frontenddocker compose restart websocketmyapp 开发注意事项
apps/myapp 在开发环境中通常会 bind mount 到容器:
/home/frappe/frappe-bench/apps/myapp开发态修改代码后通常可以直接反映到容器中;如果涉及前端资源或静态文件,可能还需要:
docker compose exec backend bench build代码检查
进入 app 目录:
cd apps/myapp运行 ruff:
ruff check .ruff format .运行 pre-commit:
pre-commit run --all-files常用环境变量
.env 中常见配置:
ERPNEXT_VERSION=v16.x.xDB_PASSWORD=<db-root-password>FRAPPE_SITE_NAME_HEADER=sitename.localhostHTTP_PUBLISH_PORT=8080HTTPS_PUBLISH_PORT=443FRAPPE_SITE_NAME_HEADER 很适合单站点调试,用来覆盖 Host 头解析。
常用服务说明
configurator:初始化服务,配置数据库和 Redis,执行完会退出。
backend:Python / Werkzeug 后端服务。
frontend:Nginx 反向代理和静态资源服务。
websocket:Node.js Socket.IO 实时通信服务。
queue-short:短任务队列 worker。
queue-long:长任务队列 worker。
scheduler:定时任务调度器。
注意事项
本地开发用 bind mount 很方便,但 staging / production 更建议把自定义 app 烘焙进镜像。
如果 staging 继续挂载 ./apps/myapp,而服务器上没有源码目录,可能会把镜像里已经存在的 myapp 覆盖掉,导致:
ModuleNotFoundError: No module named 'myapp' Frappe Docker 本地开发命令速查
https://r-gc.github.io/posts/notes/frappe/frappe-docker-dev-commands/