From 0cb3cda21ff8baf654fb8ec2b3dd47f920d37666 Mon Sep 17 00:00:00 2001 From: qiaofeng1227 <76487013@qq.com> Date: Mon, 11 Oct 2021 14:04:40 +0800 Subject: [PATCH] init --- .env | 49 ++++----- README-zh.jinja2 | 142 -------------------------- README.jinja2 | 134 ------------------------- docker-compose.yml | 242 ++++++++++++++++++++++++++------------------- variables.json | 87 +++++++--------- 5 files changed, 200 insertions(+), 454 deletions(-) delete mode 100644 README-zh.jinja2 delete mode 100644 README.jinja2 diff --git a/.env b/.env index 176e04c..0f730f4 100644 --- a/.env +++ b/.env @@ -1,33 +1,26 @@ -# COMMENT -DB_MYSQL_VERSION=5.7 -DB_MYSQL_PORT=3306 -DB_MYSQL_PASSWORD=123456 -DB_MYSQL_NAME=drupal -DB_MYSQL_USER=drupal -DB_MYSQL_HOST=mysql +# Add this file +# Initial db root password is 123456 +# Initial login username: Administrator and login password: admin +# APP_PORT can't set 9001, otherwise container erpnext-python will be error -MQ_KAFKA_PORT=9092 -MQ_RABBITMQ_PORT=5672 +DB_MRAIADB_USER=root +DB_MARIADB_PASSWORD=123456 +DB_MARIADB_HOST=mariadb +DB_MARIADB_PORT=3306 +DB_MARIADB_VERSION=10.3 -DB_POSTGRESQL_VERSION=9.5 -DB_REDIS_VERSION=5.0 - -APP_VERSION=latest -APP_PORT=9001 - -# more than two ports -APP_HTTP_PORT=9001 -APP_SSH_PORT=9002 - -APP_PASSWORD_INIT=True -APP_USER= -APP_PASSWORD= -APP_CONTAINER_NAME=onlyoffice -APP_NETWORK=onlyoffice -APP_SITE_NAME=Gost blog -APP_SITE_URL=appname.example.com +DB_REDIS_VERSION=latest +APP_VERSION=v12 +APP_PORT=8000 +APP_USER=Administrator +APP_PASSWORD=admin +APP_SITE_URL=erp.example.com +APP_SITE_NAME=`erp.example.com` +APP_INSTALL_APPS=erpnext +APP_CONTAINER_NAME=erpnext +APP_NETWORK=erpnext VOLUMES_PATH_PREFIX=./volumes -DOMAIN=appname.example.com -EMAIL=help@websoft9.com +LETSENCRYPT_EMAIL=email@example.com +SKIP_NGINX_TEMPLATE_GENERATION=0 \ No newline at end of file diff --git a/README-zh.jinja2 b/README-zh.jinja2 deleted file mode 100644 index 874c4e6..0000000 --- a/README-zh.jinja2 +++ /dev/null @@ -1,142 +0,0 @@ -# {{trademark}} on Docker - -![](https://libs.websoft9.com/common/websoft9-cloud-installer.png) - -## 简介 - -[简体中文](/README-zh.md) | [English](/README.md) - -本项目是由 [Websoft9](https://www.websoft9.com) 研发的 **云原生程序** ,大大简化 {{trademark}} 复杂的安装及配置。 - -## 系统要求 - -安装本项目,确保符合如下的条件([详细参考]({{requirements.url}})): - -* **操作系统**: Red Hat, CentOS, Debian, Ubuntu 等主流 Linux等 操作系统 -* **公有云**: AWS, Azure, Google Cloud, 阿里云, 腾讯云, 华为云等20多个全球主流云 -* **私有云**: KVM, VMware, VirtualBox, OpenStack 等主流虚拟化架构 -* **CPU架构**: {{requirements.cpu_arch}} -* **内存**: {{requirements.memory}}GB以上 -* **CPU**: {{requirements.cpu}}核以上 -* **存储**: {{requirements.disk}}GB以上 -* **Swap分区**: {{requirements.swap}}GB以上 -* **带宽**: 100M以上体验更流畅 - -## 安装使用 - -### 自动安装(推荐) - -登录 Linux,运行下面的**自动化命令**即可启动安装并显示安装结果。 - -``` -sudo wget -N https://raw.githubusercontent.com/Websoft9/StackHub/main/docker-installer.sh; sudo bash docker-installer.sh -r {{name}} - -``` - -### package包安装 - -1.生成package包 -登录 Linux,运行下面的**自动化命令**即可生成所需的package包。 -``` -sudo wget -N https://raw.githubusercontent.com/Websoft9/StackHub/main/docker-installer.sh; sudo bash docker-installer.sh -r {{name}} -p -``` -2.复制package包后安装 - -将压缩的package包复制到想要安装的服务器或虚拟机,登录 Linux,运行下面的**自动化命令**即可启动安装并显示安装结果。 -``` -sudo bash install-{{name}} -``` - -### 手动安装 - -如果熟悉 Linux 以及 Docker,可以采用手动安装的方式 - -#### 准备 Docker 环境 - -如果您的服务器尚未安装 Docker,请使用如下命令安装它: - -``` -curl -fsSL https://get.docker.com -o get-docker.sh && sh get-docker.sh -curl -L "https://github.com/docker/compose/releases/download/1.29.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose -sudo chmod +x /usr/local/bin/docker-compose -ln -sf /usr/local/bin/docker-compose /usr/bin -sudo systemctl start docker -``` - -#### 安装 {{trademark}} - -直接运行下面的命令快速安装应用。如果你熟悉 Docker,建议先修改 [docker-compose](docker-compose-production.yml) 文件以满足自己的需求 - -``` -git clone --depth=1 https://github.com/Websoft9/docker-{{name}} -cd docker-{{name}} -{% if command_extra is defined -%} -{% for cmd in command_extra -%} -{{cmd.cmd}} -{% endfor -%} -{% endif -%} -{% if command_comments is defined -%} -{% for comment in command_comments -%} -# {{comment.comment_cn}} -{% endfor -%} -{% endif -%} -sudo docker-compose -f {{compose_file}} {% if env_file is defined -%} --env-file {{env_file}} {% endif -%} up -d -``` - -### 常见问题 - -#### 安装 {{trademark}} 前需要更改密码吗? - -是的, 在生产环境中,您应该在 docker-compose 文件中修改所有数据库密码和应用程序密码 - -#### 端口冲突导致无法启动? - -修改 [docker-compose]({{compose_file}}) 文件中冲突的端口,然后再启动容器 - - -{% for faq in faqs -%} -#### {{faq.question_cn}} -{{faq.answer_cn}} - -{% endfor -%} - - -### 使用说明 - -启动应用后,本地浏览器访问 URL: *`http://服务器公网IP:{{services[0].port}}`* 进入应用。 - -下面是使用过程中可能需要的信息 - -{% if user is defined -%} -#### 账号 - -本应用默认安装后的管理员用户名和密码如下: - -| 用户名 | 密码 | -| ------- | -------- | -| {{user.username}} | {{user.password}} | - -{% endif -%} - -#### 服务和端口 - -| 名称 | 端口号 | 用途 | 必要性 | -| --- | --- | --- | --- | -{% for service in services -%} -| {{service.name}} | {{service.port}} | {{service.description_cn}} | {{service.required}} | -{% endfor -%} - - -## 文档 - -[{{trademark}} 管理员手册](https://support.websoft9.com/docs/{{name}}) - -## 企业级支持 - -如果需要企业级支持,请订阅我们提供的 [{{trademark}} 企业级支持版](https://apps.websoft9.com/{{name}}) - -订阅企业级产品后,您可获得: - -* 精准知识:产品专家的解答和指导 -* 全面支持:技术支持所需的一切,例如启用HTTPS、升级指南 -* 安全顾问:安全服务和工具,可提高您软件的安全性 \ No newline at end of file diff --git a/README.jinja2 b/README.jinja2 deleted file mode 100644 index f7e744d..0000000 --- a/README.jinja2 +++ /dev/null @@ -1,134 +0,0 @@ -# {{trademark}} on Docker - -![](https://libs.websoft9.com/common/websott9-cloud-installer.png) - -## Introduction - -[English](/README.md) | [简体中文](/README-zh.md) - -This repository is an **Cloud Native solution** powered by [Websoft9](https://www.websoft9.com), it simplifies the complicated installation and initialization process. - -## System Requirements - -The following are the minimal [recommended requirements]({{requirements.url}}): - -* **OS**: Red Hat, CentOS, Debian, Ubuntu or other's Linux OS -* **Public Cloud**: More than 20+ major Cloud such as AWS, Azure, Google Cloud, Alibaba Cloud, HUAWEIClOUD, Tencent Cloud -* **Private Cloud**: KVM, VMware, VirtualBox, OpenStack -* **ARCH**: {{requirements.cpu_arch}} -* **RAM**: {{requirements.memory}} GB or more -* **CPU**: {{requirements.cpu}} cores or higher -* **HDD**: at least {{requirements.disk}} GB of free space -* **Swap file**: at least {{requirements.swap}} GB -* **bandwidth**: more fluent experience over 100M - -## QuickStart - -### All-in-one Installer - -Use SSH to connect your instance and run the automatic installation script below - -``` -sudo wget -N https://raw.githubusercontent.com/Websoft9/StackHub/main/docker-installer.sh; sudo bash docker-installer.sh -r {{name}} -``` -### package install - -1.Make package -You can get the package as following script -``` -sudo wget -N https://raw.githubusercontent.com/Websoft9/StackHub/main/docker-installer.sh; sudo bash docker-installer.sh -r {{name}} -p -``` - -2.Install by package -Copy package to your server, Use SSH to connect your instance and run the automatic installation script below -``` -sudo bash install-{{name}} -``` - -### Manual Installation - -#### Preparation - -If you have not install Docker and Docker-Compose, refer to the following commands to install it: - -``` -curl -fsSL https://get.docker.com -o get-docker.sh && sh get-docker.sh -curl -L "https://github.com/docker/compose/releases/download/1.29.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose -sudo chmod +x /usr/local/bin/docker-compose -ln -sf /usr/local/bin/docker-compose /usr/bin -sudo systemctl start docker -``` - -#### Install {{trademark}} - -We assume that you are already familiar with Docker, and you can modify [docker-compose file]({{compose_file}}) by yourself - -``` -git clone --depth=1 https://github.com/Websoft9/docker-{{name}} -cd docker-{{name}} -{% if command_extra is defined -%} -{% for cmd in command_extra -%} -{{cmd.cmd}} -{% endfor -%} -{% endif -%} -{% if command_comments is defined -%} -{% for comment in command_comments -%} -# {{comment.comment_en}} -{% endfor -%} -{% endif -%} -docker-compose -f {{compose_file}} {% if env_file is defined -%} --env-file {{env_file}} {% endif -%} up -d -``` - -### FAQ - -#### Do I need to change the password before docker-compose up? -Yes, you should modify all database password and application password at docker-compose file for production - -#### Docker runing failed for the reason that port conflict? -You should modify ports at [docker-compose file](docker-compose-production.yml) and docker-compose again - -{% for faq in faqs -%} -#### {{faq.question_en}} -{{faq.answer_en}} - -{% endfor -%} - - -### Usage instructions - -You can point your browser to: *`http://Instance's Internet IP:{{services[0].port}}`* - -The following is the information that may be needed during use - -{% if user is defined -%} -#### Credentials - -By default, the available users are: - -| Username | Password | -| ------- | -------- | -| {{user.username}} | {{user.password}} | - -{% endif -%} - -#### Services and Ports - -| Service | Port | Use | Necessity | -| --- | --- | --- | --- | -{% for service in services -%} -| {{service.name}} | {{service.port}} | {{service.description_en}} | {{service.required}} | -{% endfor -%} - -## Documentation - -[{{trademark}} Administrator Guide](https://support.websoft9.com/docs/{{name}}) - -## Enterprise Support - -If you want to get our Enterprise Support to ensure high availability of applications, you can subscribe our [{{trademark}} Enterprise Support](https://apps.websoft9.com/{{name}}) - -What you get with a Enterprise Support subscription? - -* Knowledge: Answers and guidance from product experts -* Support: Everything you need for technical support, e.g Enable HTTPS, Upgrade guide -* Security: Security services and tools to protect your software \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index 6bbf7bc..eed231c 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,112 +1,154 @@ -# this file from docker-compose.workspace, delete mail-server -# default MySQL root password is 123456 +# Initial login username: Administrator and login password: admin +version: "3.8" - -version: '3.8' services: - onlyoffice-mysql-server: - container_name: ${APP_CONTAINER_NAME}-mysql - image: mysql:${DB_MYSQL_VERSION} - environment: - - MYSQL_ROOT_PASSWORD=${DB_MYSQL_PASSWORD} - stdin_open: true - user: root - tty: true + erpnext-nginx: + image: frappe/erpnext-nginx:${APP_VERSION} + container_name: ${APP_CONTAINER_NAME}-nginx restart: always - volumes: - - ${VOLUMES_PATH_PREFIX}/config/mysql/conf.d:/etc/mysql/conf.d - - ${VOLUMES_PATH_PREFIX}/config/mysql/docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d - - ${VOLUMES_PATH_PREFIX}/mysql_data:/var/lib/mysql - - onlyoffice-community-server: - container_name: ${APP_CONTAINER_NAME} - image: onlyoffice/communityserver:11.0.0.1458 - depends_on: - - onlyoffice-mysql-server - - onlyoffice-document-server - environment: - - ONLYOFFICE_CORE_MACHINEKEY=core_secret - - CONTROL_PANEL_PORT_80_TCP=80 - - CONTROL_PANEL_PORT_80_TCP_ADDR=onlyoffice-control-panel - - DOCUMENT_SERVER_PORT_80_TCP_ADDR=onlyoffice-document-server - - DOCUMENT_SERVER_JWT_ENABLED=true - - DOCUMENT_SERVER_JWT_SECRET=jwt_secret - - DOCUMENT_SERVER_JWT_HEADER=AuthorizationJwt - - MYSQL_SERVER_ROOT_PASSWORD=123456 - - MYSQL_SERVER_DB_NAME=onlyoffice - - MYSQL_SERVER_HOST=onlyoffice-mysql-server - - MYSQL_SERVER_USER=onlyoffice - - MYSQL_SERVER_PASS=123456 ports: - - '${APP_PORT}:80' - - '443' - - '5222:5222' - stdin_open: true - tty: true - restart: always - privileged: true - volumes: - - ${VOLUMES_PATH_PREFIX}/community_data:/var/www/onlyoffice/Data - - ${VOLUMES_PATH_PREFIX}/community_log:/var/log/onlyoffice - - ${VOLUMES_PATH_PREFIX}/community_letsencrypt:/etc/letsencrypt - - ${VOLUMES_PATH_PREFIX}/document_data:/var/www/onlyoffice/DocumentServerData - - /sys/fs/cgroup:/sys/fs/cgroup:ro - - ${VOLUMES_PATH_PREFIX}/certs:/var/www/onlyoffice/Data/certs - - onlyoffice-document-server: - container_name: ${APP_CONTAINER_NAME}-document-server - image: onlyoffice/documentserver:6.0.2 - stdin_open: true - tty: true - restart: always + - ${APP_PORT}:80 environment: - - JWT_ENABLED=true - - JWT_SECRET=jwt_secret - - JWT_HEADER=AuthorizationJwt - ports: - - '9002:80' - expose: - - '80' - - '443' + - FRAPPE_PY=erpnext-python + - FRAPPE_PY_PORT=${APP_PORT} + - FRAPPE_SOCKETIO=frappe-socketio + - SOCKETIO_PORT=9000 volumes: - - ${VOLUMES_PATH_PREFIX}/document_data:/var/www/onlyoffice/Data - - ${VOLUMES_PATH_PREFIX}/document_log:/var/log/onlyoffice - - ${VOLUMES_PATH_PREFIX}/document_fonts:/usr/share/fonts/truetype/custom - - .document_forgotten:/var/lib/onlyoffice/documentserver/App_Data/cache/files/forgotten + - sites-vol:/var/www/html/sites:rw + - assets-vol:/assets:rw - onlyoffice-control-panel: - container_name: ${APP_CONTAINER_NAME}-control-panel - depends_on: - - onlyoffice-document-server - - onlyoffice-community-server - image: onlyoffice/controlpanel:2.9.0.351 + erpnext-python: + image: frappe/erpnext-worker:${APP_VERSION} + container_name: ${APP_CONTAINER_NAME}-worker + restart: always environment: - - ONLYOFFICE_CORE_MACHINEKEY=core_secret - expose: - - '80' - - '443' + - MARIADB_HOST=${DB_MARIADB_HOST} + - REDIS_CACHE=redis-cache:6379 + - REDIS_QUEUE=redis-queue:6379 + - REDIS_SOCKETIO=redis-socketio:6379 + - SOCKETIO_PORT=9000 + - AUTO_MIGRATE=1 + volumes: + - sites-vol:/home/frappe/frappe-bench/sites:rw + - assets-vol:/home/frappe/frappe-bench/sites/assets:rw + + frappe-socketio: + image: frappe/frappe-socketio:${APP_VERSION} + container_name: ${APP_CONTAINER_NAME}-socketio + restart: always + depends_on: + - redis-socketio + volumes: + - sites-vol:/home/frappe/frappe-bench/sites:rw + - logs-vol:/home/frappe/frappe-bench/logs:rw + + erpnext-worker-default: + image: frappe/erpnext-worker:${APP_VERSION} + container_name: ${APP_CONTAINER_NAME}-worker-default + restart: always + command: worker + depends_on: + - redis-queue + - redis-cache + volumes: + - sites-vol:/home/frappe/frappe-bench/sites:rw + - logs-vol:/home/frappe/frappe-bench/logs:rw + + erpnext-worker-short: + image: frappe/erpnext-worker:${APP_VERSION} + container_name: ${APP_CONTAINER_NAME}-worker-short + restart: always + command: worker + environment: + - WORKER_TYPE=short + depends_on: + - redis-queue + - redis-cache + volumes: + - sites-vol:/home/frappe/frappe-bench/sites:rw + - logs-vol:/home/frappe/frappe-bench/logs:rw + + erpnext-worker-long: + image: frappe/erpnext-worker:${APP_VERSION} + container_name: ${APP_CONTAINER_NAME}-worker-long + restart: always + command: worker + environment: + - WORKER_TYPE=long + depends_on: + - redis-queue + - redis-cache + volumes: + - sites-vol:/home/frappe/frappe-bench/sites:rw + + erpnext-schedule: + image: frappe/erpnext-worker:${APP_VERSION} + container_name: ${APP_CONTAINER_NAME}-schedule + restart: always + command: schedule + depends_on: + - redis-queue + - redis-cache + volumes: + - sites-vol:/home/frappe/frappe-bench/sites:rw + - logs-vol:/home/frappe/frappe-bench/logs:rw + + redis-cache: + image: redis:${DB_REDIS_VERSION} + container_name: ${APP_CONTAINER_NAME}-redis-cache restart: always volumes: - - /var/run/docker.sock:/var/run/docker.sock - - ${VOLUMES_PATH_PREFIX}/controlpanel_data:/var/www/onlyoffice/Data - - ${VOLUMES_PATH_PREFIX}/controlpanel_log:/var/log/onlyoffice - stdin_open: true - tty: true - + - ${VOLUMES_PATH_PREFIX}/redis-cache-vol:/data + + redis-queue: + image: redis:${DB_REDIS_VERSION} + container_name: ${APP_CONTAINER_NAME}-redis-queue + restart: always + volumes: + - ${VOLUMES_PATH_PREFIX}/redis-queue-vol:/data + + redis-socketio: + image: redis:${DB_REDIS_VERSION} + container_name: ${APP_CONTAINER_NAME}-redis-socketio + restart: always + volumes: + - ${VOLUMES_PATH_PREFIX}/redis-socketio-vol:/data + + mariadb: + image: mariadb:${DB_MARIADB_VERSION} + container_name: ${APP_CONTAINER_NAME}-mariadb + restart: always + ports: + - ${DB_MARIADB_PORT}:3306 + environment: + - MYSQL_ROOT_PASSWORD=${DB_MARIADB_PASSWORD} + volumes: + - ./installation/frappe-mariadb.cnf:/etc/mysql/conf.d/frappe.cnf + - ${VOLUMES_PATH_PREFIX}/mariadb-vol:/var/lib/mysql + + site-creator: + image: frappe/erpnext-worker:${APP_VERSION} + container_name: ${APP_CONTAINER_NAME}-site-creator + restart: "no" + command: new + depends_on: + - erpnext-python + environment: + - SITE_NAME=${APP_SITE_URL} + - SITES=${APP_SITE_NAME} + - DB_ROOT_USER=${DB_MRAIADB_USER} + - MYSQL_ROOT_PASSWORD=${DB_MARIADB_PASSWORD} + - ADMIN_PASSWORD=${APP_PASSWORD} + - INSTALL_APPS=${APP_INSTALL_APPS} + volumes: + - sites-vol:/home/frappe/frappe-bench/sites:rw + - logs-vol:/home/frappe/frappe-bench/logs:rw + +volumes: + sites-vol: + assets-vol: + logs-vol: + networks: default: - name: ${APP_NETWORK} - -volumes: - document_data: - driver: local - document_log: - driver: local - document_forgotten: - community_mysql: - community_data: - community_log: - community_letsencrypt: - controlpanel_data: - controlpanel_log: - mysql_data: + name: "${APP_NETWORK}" \ No newline at end of file diff --git a/variables.json b/variables.json index c185667..3a5d482 100644 --- a/variables.json +++ b/variables.json @@ -1,76 +1,63 @@ { - "name": "template", - "trademark": "ONLYOFFICE", - "installpath": "/data/wwwroot/onlyoffice", - "compose_file": "docker-compose-production.yml", - "env_file": ".env_all", + "name": "erpnext", + "trademark": "ERPNext", + "compose_file": "docker-compose.yml", + "env_file": ".env", + "fork_url": "https://github.com/frappe/frappe_docker.git", "requirements":{ "cpu_arch": "Linux x86-64, ARM 32/64, Windows x86-64, IBM POWER8, x86/i686", "cpu": "2", "memory": "4", "disk": "20", "swap": "2", - "url": "https://github.com/onlyoffice/docker#recommended-system-requirements" + "url": "https://github.com/frappe/bench" }, "user": { - "username": "admin", - "password": "123456" + "username": "Administrator", + "password": "admin" }, - - "services":[ - { - "name": "onlyoffice-server", - "port": "9002", - "description_cn": "浏览器访问 ONLYOFFICE", - "description_en": "Web-GUI database management tool", - "required": "Y" - }, - - { - "name": "phpmyadmin", - "port": "9090", - "description_cn": "数据库可视化管理工具", - "description_en": "Web-GUI database management tool", - "required": "Y" - } - ], - - "command_comments":[ - { - "comment_cn": ".env文件的SITE_NAME需要修改成公网IP或者域名才能被外网访问", - "comment_en": ".env file's [SITE_NAME] should be changed to public IP or domain name to be accessed by Internet" - }, - { - "comment_cn": "默认启动的是ERPNext12,如果您想运行ERPNext13,只需将ERPNEXT_VERSION、FRAPPE_VERSION修改成v13", - "comment_en": "The default startup is erpnext12. If you want to run erpnext13, you only need to change ERPNEXT_VERSION/FRAPPE_VERSIO to V13" - } - ], - "command_extra":[ { - "cmd": "echo aaa" + "cmd": "public_ip=`wget -O - https://download.websoft9.com/ansible/get_ip.sh | bash`" }, { - "cmd": "echo bbb" + "cmd": "sudo sed -i s/APP_SITE_URL.*/APP_SITE_URL=$public_ip/g ./.env" } ], - - "faqs": [ + "services":[ { - "question_cn": "问题1", - "answer_cn": "答案1", - "question_en": "question1", - "answer_en": "answer1" + "name": "erpnext", + "port": "8000", + "description_cn": "浏览器访问 ERPNext", + "description_en": "Browser access to ERPNext by http", + "required": "Y" }, { - "question_cn": "问题2", - "answer_cn": "答案2", - "question_en": "question2", - "answer_en": "answer2" + "name": "mariadb", + "port": "3306", + "description_cn": "TCP 访问MariaDB数据库", + "description_en": "Accessing MySQL database with TCP", + "required": "Y" + } + ], + "faqs": [ + { + "question_cn": "为什么ERPNext端口用8000,这违反了compose文件的编码规范?", + "answer_cn": "因为使用9001或其他端口,将会导致部分容器发生错误,导致应用无法正常访问", + "question_en": "Why does the erptext port use 8000, which violates the encoding specification of the compose file?", + "answer_en": "The use of 9001 or other ports will lead to errors in some containers and make the application unable to access normally" + }, + + { + "question_cn": "默认启动的ERPNext是v12,我想运行其他版本该如何操作", + "answer_cn": "如果您想运行ERPNext13,只需将ERPNEXT_VERSION、FRAPPE_VERSION修改成v13;修改前需要删除volumes文件夹", + "question_en": "The default startup is erpnext12, What should I do if I want to run another version?", + "answer_en": " If you want to run erpnext13, you only need to change ERPNEXT_VERSION/FRAPPE_VERSIO to V13;Please delete volumes before edit configure" } ] + }