dram.me

手动搭建ERPNext Docker环境

本文介绍在Windows下基于Docker Desktop手动搭建ERPNext测试环境的简要流程。

说明:本方案只是用于测试Docker环境,如果需要生产使用,建议直接基于官方docker-compose.yml配置调整使用Docker Compose搭建。

获取镜像

首先获取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

启动服务

依序启动以下各服务,其中涉及的IP可通过docker inspect命令查询,以MariaDB为例:

docker inspect mariadb | select-string -pattern "IPAddress"

说明:Docker中,实例IP是不固定的,可以使用DNS或者hosts文件注入等机制处理IP变动问题,以下示例中的IP是在空白Docker环境中依序启动获得的IP。

  1. 启动数据库

    docker run -d --name mariadb -e MARIADB_ROOT_PASSWORD=erpnext mariadb:10.3 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
  2. 启动Redis

    docker run -d --name redis redis:6.2-alpine
  3. 启动ERPNext

    docker run -d --name erpnext-worker -v c:/erpnext-sites:/home/frappe/frappe-bench/sites -e "MARIADB_HOST=172.17.0.2" -e "REDIS_CACHE=172.17.0.3" -e "REDIS_QUEUE=172.17.0.3" -e "REDIS_SOCKETIO=172.17.0.3" -e "SOCKETIO_PORT=9000" frappe/erpnext-worker:v13
  4. 启动SocketIO

    docker run -d --name erpnext-socketio -v c:/erpnext-sites:/home/frappe/frappe-bench/sites frappe/frappe-socketio:v13
  5. 启动NGINX

    docker run -d --name erpnext-nginx -p 8000:80 -v c:/erpnext-sites:/var/www/html/sites -e "FRAPPE_PY=172.17.0.4" -e "FRAPPE_SOCKETIO=172.17.0.5" frappe/erpnext-nginx:v13

创建站点

docker exec -it erpnext-worker bench new-site localhost
docker exec -it erpnext-worker bench --site localhost install-app erpnext

同步静态文件(耗时较长)

docker exec erpnext-nginx 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实例。

整合镜像(非官方)

另外,有非官方的整合镜像,如果只是用于测试或演示环境的话,相对要简化许多。

docker pull pipech/erpnext-docker-debian:13-F5.0_E5.0-py3
docker run -d -p 8000:8000 -p 9000:9000 --add-host secure.gravatar.com:127.0.0.1 pipech/erpnext-docker-debian:13-F5.0_E5.0-py3