dram.me

基于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实例。