From a6e1baa9b705e2e1563706821f4aab8a7eef484e Mon Sep 17 00:00:00 2001 From: Karan Janthe <86996507+KMJ-007@users.noreply.github.com> Date: Tue, 13 Jun 2023 04:06:15 +0530 Subject: [PATCH] added guide for linux/mac to setup frappe docker (#1149) * added guide for linux/mac to setup frappe docker * guide added in readme * linting done according to guidelines --- README.md | 1 + docs/setup_for_linux_mac.md | 249 ++++++++++++++++++++++++++++++++++++ 2 files changed, 250 insertions(+) create mode 100644 docs/setup_for_linux_mac.md diff --git a/README.md b/README.md index 933d70a8..436e3f4a 100644 --- a/README.md +++ b/README.md @@ -34,6 +34,7 @@ Wait for 5 minutes for ERPNext site to be created or check `create-site` contain - [Backup and Push Cron Job](docs/backup-and-push-cronjob.md) - [Port Based Multi Tenancy](docs/port-based-multi-tenancy.md) - [Migrate from multi-image setup](docs/migrate-from-multi-image-setup.md) +- [running on linux/mac](docs/setup_for_linux_mac.md) ### [Custom Images](#custom-images) diff --git a/docs/setup_for_linux_mac.md b/docs/setup_for_linux_mac.md new file mode 100644 index 00000000..a6ca38bd --- /dev/null +++ b/docs/setup_for_linux_mac.md @@ -0,0 +1,249 @@ +# How to install ERPNext on linux/mac using Frappe_docker ? + +step1: clone the repo + +``` +git clone https://github.com/frappe/frappe_docker +``` + +step2: add platform: linux/amd64 to all services in the /pwd.yaml + +here is the update pwd.yml file + +```yml +version: "3" + +services: + backend: + image: frappe/erpnext:v14.27.1 + platform: linux/amd64 + deploy: + restart_policy: + condition: on-failure + volumes: + - sites:/home/frappe/frappe-bench/sites + - logs:/home/frappe/frappe-bench/logs + + configurator: + image: frappe/erpnext:v14.27.1 + platform: linux/amd64 + deploy: + restart_policy: + condition: none + entrypoint: + - bash + - -c + 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:v14.27.1 + platform: linux/amd64 + 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; + 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=admin --db-root-password=admin --install-app erpnext --set-default; + + db: + image: mariadb:10.6 + platform: linux/amd64 + 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: frappe/erpnext:v14.27.1 + platform: linux/amd64 + 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-default: + image: frappe/erpnext:v14.27.1 + platform: linux/amd64 + 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:v14.27.1 + platform: linux/amd64 + 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:v14.27.1 + platform: linux/amd64 + 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 + platform: linux/amd64 + deploy: + restart_policy: + condition: on-failure + volumes: + - redis-queue-data:/data + + redis-cache: + image: redis:6.2-alpine + platform: linux/amd64 + deploy: + restart_policy: + condition: on-failure + volumes: + - redis-cache-data:/data + + redis-socketio: + image: redis:6.2-alpine + platform: linux/amd64 + deploy: + restart_policy: + condition: on-failure + volumes: + - redis-socketio-data:/data + + scheduler: + image: frappe/erpnext:v14.27.1 + platform: linux/amd64 + 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:v14.27.1 + platform: linux/amd64 + 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: + redis-socketio-data: + sites: + logs: +``` + +step3: run the docker + +``` +docker-compose -f ./pwd.yaml up +``` + +--- + +Wait for couple of minutes. + +Open localhost:8080