请问需要企业服务吗?我用NAS搭建ERPNext助力你的创业!
怕错过我的精彩分享?那就赶快关注下熊猫吧!
前言
该容器其实之前便发现了,但是一直折腾不对,各种报错。近期看到老苏把它折腾好了,于是想着搭建试试。项目为ERPNext,它提供了一套完整的企业解决方案,包括会计、采购、销售、库存、制造、CRM等功能,为中小型企业提供一种简单、易用、灵活的ERP系统,如果你有创业需求,那么在创业初期不愿意花钱买ERP的情况下可以尝试一用。(本次部署使用为群晖6.x系统,推荐至少8G内存)
部署过程
这里我们直接用老苏整理好的docker-compose.yml与env.txt文件,实在是该项目要启动的容器太多了,熊猫懒得折腾了。docker-compose.yml文件如下:
version: "3"
services:
backend:
image: frappe/erpnext:${APP_VERSION}
container_name: ${APP_NAME}-backend
deploy:
restart_policy:
condition: on-failure
volumes:
- sites:/home/frappe/frappe-bench/sites
- logs:/home/frappe/frappe-bench/logs
configurator:
image: frappe/erpnext:${APP_VERSION}
container_name: ${APP_NAME}-configurator
deploy:
restart_policy:
condition: none
entrypoint:
- bash
- -c
depends_on:
- db
command:
- >
ls -1 apps > sites/apps.txt;
bench set-config -g db_host $$DB_HOST;
bench set-config -gp db_port $$DB_PORT;
bench set-config -g redis_cache "redis://$$REDIS_CACHE";
bench set-config -g redis_queue "redis://$$REDIS_QUEUE";
bench set-config -g redis_socketio "redis://$$REDIS_SOCKETIO";
bench set-config -gp socketio_port $$SOCKETIO_PORT;
environment:
DB_HOST: db
DB_PORT: "3306"
REDIS_CACHE: redis-cache:6379
REDIS_QUEUE: redis-queue:6379
REDIS_SOCKETIO: redis-socketio:6379
SOCKETIO_PORT: "9000"
volumes:
- sites:/home/frappe/frappe-bench/sites
- logs:/home/frappe/frappe-bench/logs
create-site:
image: frappe/erpnext:${APP_VERSION}
container_name: ${APP_NAME}-create-site
depends_on:
- configurator
deploy:
restart_policy:
condition: none
volumes:
- sites:/home/frappe/frappe-bench/sites
- logs:/home/frappe/frappe-bench/logs
entrypoint:
- bash
- -c
command:
- >
wait-for-it -t 240 db:3306;
wait-for-it -t 120 redis-cache:6379;
wait-for-it -t 120 redis-queue:6379;
wait-for-it -t 120 redis-socketio:6379;
export start=`date +%s`;
until [[ -n `grep -hs ^ sites/common_site_config.json | jq -r ".db_host // empty"` ]] &&
[[ -n `grep -hs ^ sites/common_site_config.json | jq -r ".redis_cache // empty"` ]] &&
[[ -n `grep -hs ^ sites/common_site_config.json | jq -r ".redis_queue // empty"` ]];
do
echo "Waiting for sites/common_site_config.json to be created";
sleep 5;
if (( `date +%s`-start > 120 )); then
echo "could not find sites/common_site_config.json with required keys";
exit 1
fi
done;
echo "sites/common_site_config.json found";
bench new-site frontend --no-mariadb-socket --admin-password=${APP_PASSWORD} --db-root-password=${DB_ROOT_PASSWORD} --install-app erpnext --set-default;
db:
image: mariadb:10.6
container_name: ${APP_NAME}-db
healthcheck:
test: mysqladmin ping -h localhost --password=${DB_PASSWORD}
interval: 1s
retries: 15
deploy:
restart_policy:
condition: on-failure
command:
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_unicode_ci
- --skip-character-set-client-handshake
- --skip-innodb-read-only-compressed # Temporary fix for MariaDB 10.6
environment:
MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD}
volumes:
- ./data:/var/lib/mysql
#ports:
# - "${DB_PORT}:3306"
frontend:
image: frappe/erpnext:${APP_VERSION}
container_name: ${APP_NAME}-frontend
deploy:
restart_policy:
condition: on-failure
command:
- nginx-entrypoint.sh
environment:
BACKEND: backend:8000
FRAPPE_SITE_NAME_HEADER: frontend
SOCKETIO: websocket:9000
UPSTREAM_REAL_IP_ADDRESS: ${APP_HTTP_IP}
UPSTREAM_REAL_IP_HEADER: X-Forwarded-For
UPSTREAM_REAL_IP_RECURSIVE: "off"
PROXY_READ_TIMOUT: 120
CLIENT_MAX_BODY_SIZE: 50m
volumes:
- sites:/home/frappe/frappe-bench/sites
- logs:/home/frappe/frappe-bench/logs
ports:
- "${APP_HTTP_PORT}:8080"
queue-default:
image: frappe/erpnext:${APP_VERSION}
container_name: ${APP_NAME}-queue-default
deploy:
restart_policy:
condition: on-failure
command:
- bench
- worker
- --queue
- default
volumes:
- sites:/home/frappe/frappe-bench/sites
- logs:/home/frappe/frappe-bench/logs
queue-long:
image: frappe/erpnext:${APP_VERSION}
container_name: ${APP_NAME}-queue-long
deploy:
restart_policy:
condition: on-failure
command:
- bench
- worker
- --queue
- long
volumes:
- sites:/home/frappe/frappe-bench/sites
- logs:/home/frappe/frappe-bench/logs
queue-short:
image: frappe/erpnext:${APP_VERSION}
container_name: ${APP_NAME}-queue-short
deploy:
restart_policy:
condition: on-failure
command:
- bench
- worker
- --queue
- short
volumes:
- sites:/home/frappe/frappe-bench/sites
- logs:/home/frappe/frappe-bench/logs
redis-queue:
image: redis:6.2-alpine
container_name: ${APP_NAME}-redis-queue
deploy:
restart_policy:
condition: on-failure
volumes:
- ./redis-queue-data:/data
redis-cache:
image: redis:6.2-alpine
container_name: ${APP_NAME}-redis-cache
deploy:
restart_policy:
condition: on-failure
volumes:
- ./redis-cache-data:/data
redis-socketio:
image: redis:6.2-alpine
container_name: ${APP_NAME}-redis-socketio
deploy:
restart_policy:
condition: on-failure
volumes:
- ./redis-socketio-data:/data
scheduler:
image: frappe/erpnext:${APP_VERSION}
container_name: ${APP_NAME}-scheduler
deploy:
restart_policy:
condition: on-failure
command:
- bench
- schedule
volumes:
- sites:/home/frappe/frappe-bench/sites
- logs:/home/frappe/frappe-bench/logs
websocket:
image: frappe/erpnext:${APP_VERSION}
container_name: ${APP_NAME}-websocket
deploy:
restart_policy:
condition: on-failure
command:
- node
- /home/frappe/frappe-bench/apps/frappe/socketio.js
volumes:
- sites:/home/frappe/frappe-bench/sites
- logs:/home/frappe/frappe-bench/logs
volumes:
logs:
sites:
随后便是env.txt文件,里面的内容可以根据自己情况更改。
# ERPNext config
APP_NAME=erp
APP_VERSION=v14.23.0
APP_HTTP_IP=192.168.101.66
APP_HTTP_PORT=6380
APP_PASSWORD=admin
# MariaDB config
DB_HOST=db
DB_PASSWORD=panda
DB_ROOT_PASSWORD=panda
DB_PORT=3336
APP_NAME: 主要影响生成的容器名称的前缀
APP_VERSION: ERPNext的版本,已测试过v14.22.3 和 v14.23.0;
APP_HTTP_IP:主机 IP,要根据你自己的群晖主机IP修改;
APP_HTTP_PORT:这是访问ERPNext服务的的本地端口,不冲突就行;
APP_PASSWORD:管理员密码,建议登录成功之后再改;
DB_HOST:数据库主机,不要改;
DB_PASSWORD:数据库密码,建议改;
DB_ROOT_PASSWORD:数据库管理员密码,建议改;
DB_PORT:数据库本地端口,不冲突就行。 在准备好这一切之后我们打开群晖的ssh功能,随后用ssh工具连接到群晖,依次执行以下命令:
# 新建文件夹 erpnext 和 子目录
mkdir -p /volume1/docker/erpnext/{data,redis-cache-data,redis-queue-data,redis-socketio-data}
# 进入 erpnext 目录
cd /volume1/docker/erpnext
# 将 docker-compose.yml 和 env.txt 两个文件放入当前目录
# 一键运行
docker-compose --env-file env.txt up -d
这一步需要等待一段时间,因为需要拉取大概十来个容器,所以请耐心等待,如果出现无法拉取或者拉取超时,可重新执行命令。
体验
如果启动正常那么你能看到你的容器中多了很多容器,前缀都是ERP。
首次启动会等待异常久的时间,我们可以在erp-create-site容器中查看进度,等待该容器自动停止运行后便启动成功了。
我们输入http://群晖IP:6380来访问ERPNext,看看是否可以访问。
OK了!成功启动容器,我们先登录,账户默认为Administrator,密码则是你自己设置的APP_PASSWORD的值,首次登录还会进行一些配置。(语言选择可以选择中文,如果不能选择,直接输入简体中文也行)
设置完成后会自动刷新,便可以看到主界面了,ERP系统的内容连接的都懂,熊猫这里就不一一介绍了。感兴趣的可以自行研究。
总结
以上便是本期的全部内容了,如果你觉得还算有趣或者对你有所帮助,不妨点赞收藏,最后也希望能得到你的关注,咱们下期见!
最后给大家推荐群晖的923+,熊猫最近容器大部分都是使用923+部署。感兴趣的小伙伴可以点点链接去了解哦!!!(无任何合作)
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~











诺瓦克
校验提示文案
kxbs
校验提示文案
王者来袭
校验提示文案
冥冰薇
校验提示文案
灵KOYB
校验提示文案
值友5746878470
校验提示文案
tcgt
校验提示文案
YooYiwan
校验提示文案
疯力发电
校验提示文案
坐在月亮上数星星
校验提示文案
技术宅是我梦想
校验提示文案
潮玩情报官
校验提示文案
疯爆银熊
校验提示文案
强哥视角
校验提示文案
花果山最迷人的小妖精
校验提示文案
小泽不是玛利亚o0
校验提示文案
然然妈妈
校验提示文案
隔壁的七大叔
校验提示文案
BigBig王小北
校验提示文案
bubble颖儿
校验提示文案
子弹
校验提示文案
潇潇爱旅行
校验提示文案
值友5746878470
校验提示文案
onebyeno
校验提示文案
啥都没有
校验提示文案
清风静入夜
校验提示文案
今天适合买买买
校验提示文案
行者之珅
校验提示文案
灵KOYB
校验提示文案
bubble颖儿
校验提示文案
BigBig王小北
校验提示文案
隔壁的七大叔
校验提示文案
然然妈妈
校验提示文案
冥冰薇
校验提示文案
小泽不是玛利亚o0
校验提示文案
花果山最迷人的小妖精
校验提示文案
强哥视角
校验提示文案
疯爆银熊
校验提示文案
王者来袭
校验提示文案
潮玩情报官
校验提示文案