基于Compose搭建ERPNext Docker环境
本文介绍在Windows下基于Docker Desktop,采用Compose机制搭建ERPNext测试环境的简要流程。
本方案只适用于测试环境,做了诸多简化,如果需要生产使用,建议直接基于官方的docker-compose.yml配置调整搭建。
获取镜像
首先获取ERPNext以及相关依赖服务的Docker镜像,为后续启动服务做准备。
docker pull mariadb:10.3 docker pull redis:6.2-alpine docker pull frappe/erpnext-worker:v13 docker pull frappe/frappe-socketio:v13 docker pull frappe/erpnext-nginx:v13
创建目录
需要准备两份目录,一是作为各容器实例间共享资源使用,示例中为c:/erpnext-sites,另一目录是用于存放Compose配置文件,示例中为c:/erpnext。
注意:在环境构建过程中,IP信息会固化在c:/erpnext-sites/common_site_config.json文件中,如果需要启用新的环境,需要启用新的目录替换c:/erpnext-sites,或者清除其中的内容。
创建Compose配置文件
在c:/erpnext目录中创建文件docker-compose.yml,内容如下:
version: "3"
services:
erpnext-nginx:
image: frappe/erpnext-nginx:v13
depends_on:
- erpnext-worker
- frappe-socketio
environment:
FRAPPE_PY: erpnext-worker
FRAPPE_SOCKETIO: frappe-socketio
ports:
- 8000:80
volumes:
- c:/erpnext-sites:/var/www/html/sites
frappe-socketio:
image: frappe/frappe-socketio:v13
depends_on:
- erpnext-worker
volumes:
- c:/erpnext-sites:/home/frappe/frappe-bench/sites
erpnext-worker:
image: frappe/erpnext-worker:v13
depends_on:
- mariadb
- redis
environment:
MARIADB_HOST: mariadb
REDIS_CACHE: redis:6379
REDIS_QUEUE: redis:6379
REDIS_SOCKETIO: redis:6379
SOCKETIO_PORT: 9000
volumes:
- c:/erpnext-sites:/home/frappe/frappe-bench/sites
mariadb:
image: mariadb:10.3
command:
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_unicode_ci
environment:
MYSQL_ROOT_PASSWORD: erpnext
redis:
image: redis:6.2-alpine
启动服务
启动PowerShell,切换目录到c:/erpnext,执行以下命令:
docker compose create docker compose start
如果一切顺利,浏览器访问http://localhost:8000
应可以显示404 Not Found
页面。
创建站点
docker exec -it erpnext_erpnext-worker-1 bench new-site localhost docker exec -it erpnext_erpnext-worker-1 bench --site localhost install-app erpnext
同步静态文件(耗时较长)
docker exec erpnext_erpnext-nginx_1 rsync -a --delete /var/www/html/assets /var/www/html/sites
安装自定义应用
以安装ebclocal为例,在erpnext-worker实例内执行以下命令:
install_app ebclocal https://gitee.com/yuzelin/ebclocal.git echo ebclocal >>/home/frappe/frappe-bench/sites/apps.txt . /home/frappe/frappe-bench/env/bin/activate bench --site localhost install-app ebclocal
安装完成后,需要重启erpnext-worker实例。