本文指导如何在Linux环境中安装FrappeERPNext的HRMS模块,使用docker-compose管理容器,包括Git克隆项目、配置变量、设置环境、创建数据库和站点,以及启动和停止容器。
需要安装frappe ——>ERPNext ——>hrms
https://github.com/frappe/hrms
安装 dokcer compose
cd /usr/local/bin/ wget https://github.com/docker/compose/releases/download/v2.2.3/docker-compose-linux-x86_64 mv docker-compose-linux-x86_64 docker-compose sudo chmod +x /usr/local/bin/docker-compose cd docker-compose --version
安装 hrms
使用的compose文件
https://github.com/vibeconn/erpnext-custom/blob/main/docker-compose.yaml
# 安装 git yum install -y git # 获取项目 cd /opt git clone https://github.com/frappe/frappe_docker cd frappe_docker # 配置变量 export APPS_JSON_BASE64=$(echo ${APPS_JSON} | base64 -w 0) # 备份文件 mv pwd.yml pwd.yml.bak
配置文件
cat >pwd.yml<<'END' version: "3" services: backend: image: 89neuron/erpnext_hrms_payments:v15 deploy: restart_policy: condition: on-failure volumes: - sites:/home/frappe/frappe-bench/sites - logs:/home/frappe/frappe-bench/logs configurator: image: 89neuron/erpnext_hrms_payments:v15 deploy: restart_policy: condition: none entrypoint: - bash - -c # add redis_socketio for backward compatibility 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_QUEUE"; 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 SOCKETIO_PORT: "9000" volumes: - sites:/home/frappe/frappe-bench/sites - logs:/home/frappe/frappe-bench/logs create-site: image: 89neuron/erpnext_hrms_payments:v15 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 120 db:3306; wait-for-it -t 120 redis-cache:6379; wait-for-it -t 120 redis-queue: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 --no-mariadb-socket --admin-password=admin --db-root-password=admin --install-app erpnext --set-default frontend; bench --site frontend install-app hrms; bench --site frontend install-app payments; db: image: mariadb:11.2 healthcheck: test: mysqladmin ping -h localhost --password=admin 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: admin volumes: - db-data:/var/lib/mysql frontend: image: 89neuron/erpnext_hrms_payments:v15 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: 127.0.0.1 UPSTREAM_REAL_IP_HEADER: X-Forwarded-For UPSTREAM_REAL_IP_RECURSIVE: "off" PROXY_READ_TIMEOUT: 120 CLIENT_MAX_BODY_SIZE: 50m volumes: - sites:/home/frappe/frappe-bench/sites - logs:/home/frappe/frappe-bench/logs ports: - "8080:8080" queue-long: image: 89neuron/erpnext_hrms_payments:v15 deploy: restart_policy: condition: on-failure command: - bench - worker - --queue - long,default,short volumes: - sites:/home/frappe/frappe-bench/sites - logs:/home/frappe/frappe-bench/logs queue-short: image: 89neuron/erpnext_hrms_payments:v15 deploy: restart_policy: condition: on-failure depends_on: ["backend"] command: - bench - worker - --queue - short,default volumes: - sites:/home/frappe/frappe-bench/sites - logs:/home/frappe/frappe-bench/logs redis-queue: image: redis:6.2-alpine deploy: restart_policy: condition: on-failure volumes: - redis-queue-data:/data redis-cache: image: redis:6.2-alpine deploy: restart_policy: condition: on-failure volumes: - redis-cache-data:/data scheduler: image: 89neuron/erpnext_hrms_payments:v15 deploy: restart_policy: condition: on-failure depends_on: ["backend"] command: - bench - schedule volumes: - sites:/home/frappe/frappe-bench/sites - logs:/home/frappe/frappe-bench/logs websocket: image: 89neuron/erpnext_hrms_payments:v15 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: db-data: redis-queue-data: redis-cache-data: sites: logs: END # 修改重启策略 sed -i 's#none#on-failure#g' pwd.yml
# 启动容器 docker-compose -f ./pwd.yml up -d
# 访问路径 http://ip:8080 # 配置信息 简体中文 China
http://ip:8080
默认账号密码
Administrator
admin
清理环境
docker stop `docker ps -a|awk '{print $1}'` docker rm `docker ps -a|awk '{print $1}'` cd /root/frappe_docker/ docker-compose -f ./pwd.yml down docker volume rm frappe_cert-data docker volume rm frappe_db-data docker volume rm frappe_docker_db-data docker volume rm frappe_docker_logs docker volume rm frappe_docker_redis-cache-data docker volume rm frappe_docker_redis-queue-data docker volume rm frappe_docker_sites docker volume rm frappe_mariadb-data docker volume rm frappe_redis-cache-data docker volume rm frappe_redis-queue-data docker volume rm frappe_sites docker volume rm root_db-data docker volume rm root_logs docker volume rm root_redis-cache-data docker volume rm root_redis-queue-data docker volume rm root_sites docker volume prune