如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
一个适用于现代网络的优秀社区平台。
ERPNext是领先的开源企业资源规划(ERP)软件。ERPNext是由Frappé Technologies Pvt. Ltd.开发的免费开源集成企业资源规划软件,基于MariaDB数据库系统,使用Python开发的Frappe服务器端框架构建。
您可以通过以下命令轻松部署:
bashgit clone https://github.com/elestio-examples/erpnext.git
将测试文件夹中的.env文件复制到项目目录:
bashcp ./tests/.env ./.env
编辑.env文件,填入您自己的值。
使用以下命令运行项目:
bashdocker-compose up -d
您可以通过 http://your-domain:8989 访问Web界面。
以下是帮助您开始创建容器的示例配置片段:
yamlversion: "3.3" services: backend: image: frappe/erpnext-worker:${SOFTWARE_VERSION_TAG} restart: always volumes: - sites:/home/frappe/frappe-bench/sites - assets:/home/frappe/frappe-bench/sites/assets configurator: image: frappe/erpnext-worker:${SOFTWARE_VERSION_TAG} command: - configure.py environment: DB_HOST: ${DB_HOST} DB_PORT: ${DB_PORT} REDIS_CACHE: ${REDIS_CACHE} REDIS_QUEUE: ${REDIS_QUEUE} REDIS_SOCKETIO: ${REDIS_SOCKETIO} SOCKETIO_PORT: ${SOCKETIO_PORT} volumes: - sites:/home/frappe/frappe-bench/sites create-site: image: frappe/erpnext-worker:${SOFTWARE_VERSION_TAG} deploy: restart_policy: condition: on-failure volumes: - sites:/home/frappe/frappe-bench/sites - assets:/home/frappe/frappe-bench/sites/assets 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; wait-for-it -t 120 redis-socketio:6379; export start=`date +%s`; until [[ -n `grep -hs ^ common_site_config.json | jq -r ".db_host // empty"` ]] && \ [[ -n `grep -hs ^ common_site_config.json | jq -r ".redis_cache // empty"` ]] && \ [[ -n `grep -hs ^ common_site_config.json | jq -r ".redis_queue // empty"` ]]; do echo "Waiting for common_site_config.json to be created"; sleep 5; if (( `date +%s`-start > 120 )); then echo "could not find common_site_config.json with required keys"; exit 1 fi done; echo "common_site_config.json found"; bench new-site frontend --admin-password=${ADMIN_PASSWORD} --db-root-password=admin --install-app payments --install-app erpnext --set-default; db: image: mariadb:10.6 restart: always command: - --character-set-server=utf8mb4 - --collation-server=utf8mb4_unicode_ci - --skip-character-set-client-handshake - --skip-innodb-read-only-compressed # MariaDB 10.6的临时修复 environment: MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} volumes: - db-data:/var/lib/mysql frontend: image: frappe/erpnext-nginx:${SOFTWARE_VERSION_TAG} restart: always depends_on: backend: condition: service_started websocket: condition: service_started environment: BACKEND: ${BACKEND} FRAPPE_SITE_NAME_HEADER: ${FRAPPE_SITE_NAME_HEADER} SOCKETIO: ${SOCKETIO} UPSTREAM_REAL_IP_ADDRESS: ${UPSTREAM_REAL_IP_ADDRESS} UPSTREAM_REAL_IP_HEADER: ${UPSTREAM_REAL_IP_HEADER} UPSTREAM_REAL_IP_RECURSIVE: ${UPSTREAM_REAL_IP_RECURSIVE} volumes: - sites:/usr/share/nginx/html/sites - assets:/usr/share/nginx/html/assets ports: - "172.17.0.1:8989:8080" queue-default: image: frappe/erpnext-worker:${SOFTWARE_VERSION_TAG} restart: always command: - bench - worker - --queue - default volumes: - sites:/home/frappe/frappe-bench/sites - assets:/home/frappe/frappe-bench/sites/assets queue-long: image: frappe/erpnext-worker:${SOFTWARE_VERSION_TAG} restart: always command: - bench - worker - --queue - long volumes: - sites:/home/frappe/frappe-bench/sites - assets:/home/frappe/frappe-bench/sites/assets queue-short: image: frappe/erpnext-worker:${SOFTWARE_VERSION_TAG} restart: always command: - bench - worker - --queue - short volumes: - sites:/home/frappe/frappe-bench/sites - assets:/home/frappe/frappe-bench/sites/assets redis-queue: image: redis:6.2-alpine restart: always volumes: - redis-queue-data:/data redis-cache: image: redis:6.2-alpine restart: always volumes: - redis-cache-data:/data redis-socketio: image: redis:6.2-alpine restart: always volumes: - redis-socketio-data:/data scheduler: image: frappe/erpnext-worker:${SOFTWARE_VERSION_TAG} restart: always command: - bench - schedule volumes: - sites:/home/frappe/frappe-bench/sites - assets:/home/frappe/frappe-bench/sites/assets websocket: image: frappe/frappe-socketio:${SOFTWARE_VERSION_TAG} restart: always volumes: - sites:/home/frappe/frappe-bench/sites - assets:/home/frappe/frappe-bench/sites/assets volumes: assets: driver: local driver_opts: type: none device: ${PWD}/assets o: bind db-data: driver: local driver_opts: type: none device: ${PWD}/db-data o: bind redis-queue-data: driver: local driver_opts: type: none device: ${PWD}/redis-queue-data o: bind redis-cache-data: driver: local driver_opts: type: none device: ${PWD}/redis-cache-data o: bind redis-socketio-data: driver: local driver_opts: type: none device: ${PWD}/redis-socketio-data o: bind sites: driver: local driver_opts: type: none device: ${PWD}/sites o: bind
环境变量
| 变量名 | 示例值 |
|---|---|
| SOFTWARE_VERSION_TAG | latest |
| DB_HOST | db-name |
| DB_PORT | 3306 |
| REDIS_CACHE | redis-cache:6379 |
| REDIS_QUEUE | redis-queue:6379 |
| REDIS_SOCKETIO | redis-socketio:6379 |
| SOCKETIO_PORT | 9000 |
| MARIADB_VERSION_TAG | latest |
| MYSQL_ROOT_PASSWORD | password |
| BACKEND | backend:8000 |
| FRAPPE_SITE_NAME_HEADER | X-Frappe-Site-Name |
| SOCKETIO | websocket:9000 |
| UPSTREAM_REAL_IP_ADDRESS | 127.0.0.1 |
| UPSTREAM_REAL_IP_HEADER | X-Forwarded-For |
| UPSTREAM_REAL_IP_RECURSIVE | on |
Elestio ERPNext Docker镜像将容器日志发送到stdout。要查看日志,可以使用以下命令:
bashdocker-compose logs -f
要停止服务栈,可以使用以下命令:
bashdocker-compose down
为了简化备份和恢复操作,我们使用文件夹卷挂载。您只需使用docker-compose down停止服务栈,然后备份docker-compose.yml文件所在文件夹中的所有文件和子文件夹。
创建ZIP归档
例如,如果要创建ZIP归档,请导航到包含docker-compose.yml文件的文件夹,然后使用以下命令:
bashzip -r myarchive.zip .
从ZIP归档恢复
要从ZIP归档恢复,请使用以下命令将归档解压缩到原始文件夹:
bashunzip myarchive.zip -d /path/to/original/folder
启动服务栈
备份完成后,您可以使用以下命令再次启动服务栈:
bashdocker-compose up -d
就是这样!通过这些简单步骤,您可以使用Docker Compose轻松备份和恢复数据卷。
ERPNext文档
https://github.com/frappe/erpnext
https://github.com/elestio-examples/erpnext
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。





来自真实用户的反馈,见证轩辕镜像的优质服务