diff --git a/pwd.yml b/pwd.yml index f5589ff1..bfafcdfa 100644 --- a/pwd.yml +++ b/pwd.yml @@ -1,71 +1,44 @@ version: "3" services: - db: - image: mariadb:10.6 - platform: linux/amd64 - command: - - --character-set-server=utf8mb4 - - --collation-server=utf8mb4_unicode_ci - - --skip-character-set-client-handshake - - --skip-innodb-read-only-compressed - environment: - MYSQL_ROOT_PASSWORD: admin - MARIADB_ROOT_PASSWORD: admin - volumes: - - db-data:/var/lib/mysql - networks: - - frappe_network - healthcheck: - test: mysqladmin ping -h localhost --password=admin - interval: 1s - retries: 20 - - redis-cache: - image: redis:6.2-alpine - platform: linux/amd64 - volumes: - - redis-queue-data:/data - networks: - - frappe_network - - redis-queue: - image: redis:6.2-alpine - platform: linux/amd64 - volumes: - - redis-queue-data:/data - networks: - - frappe_network - backend: - image: frappe/erpnext:v15.65.4 + image: frappe/erpnext:v15 platform: linux/amd64 - volumes: - - sites:/home/frappe/frappe-bench/sites - - logs:/home/frappe/frappe-bench/logs - environment: - DB_HOST: db - DB_PORT: "3306" - MYSQL_ROOT_PASSWORD: admin - MARIADB_ROOT_PASSWORD: admin networks: - frappe_network deploy: restart_policy: condition: on-failure + volumes: + - sites:/home/frappe/frappe-bench/sites + - logs:/home/frappe/frappe-bench/logs + - apps:/home/frappe/frappe-bench/apps + environment: + DB_HOST: "db" + DB_PORT: "3306" + MYSQL_ROOT_PASSWORD: admin + MARIADB_ROOT_PASSWORD: admin configurator: - image: frappe/erpnext:v15.65.4 + image: frappe/erpnext:v15 platform: linux/amd64 - 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_QUEUE && - bench set-config -gp socketio_port $SOCKETIO_PORT; + networks: + - frappe_network + 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_QUEUE"; + bench set-config -gp socketio_port $$SOCKETIO_PORT; environment: DB_HOST: db DB_PORT: "3306" @@ -75,49 +48,78 @@ services: volumes: - sites:/home/frappe/frappe-bench/sites - logs:/home/frappe/frappe-bench/logs + - apps:/home/frappe/frappe-bench/apps + + create-site: + image: frappe/erpnext:v15 + platform: linux/amd64 networks: - frappe_network deploy: restart_policy: condition: none - - create-site: - image: frappe/erpnext:v15.65.4 - platform: linux/amd64 - 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 "common_site_config.json not ready"; - exit 1; - fi; - done; - echo "sites/common_site_config.json found"; - bench new-site --mariadb-user-host-login-scope='%' --admin-password=admin --db-root-username=root --db-root-password=admin --install-app erpnext --set-default frontend; volumes: - sites:/home/frappe/frappe-bench/sites - logs:/home/frappe/frappe-bench/logs + - apps:/home/frappe/frappe-bench/apps + 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 --mariadb-user-host-login-scope='%' --admin-password=admin --db-root-username=root --db-root-password=admin --install-app erpnext --set-default frontend; + + db: + image: mariadb:10.6 + platform: linux/amd64 networks: - frappe_network + healthcheck: + test: mysqladmin ping -h localhost --password=admin + interval: 1s + retries: 20 deploy: restart_policy: - condition: none + 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 + MARIADB_ROOT_PASSWORD: admin + volumes: + - db-data:/var/lib/mysql frontend: - image: frappe/erpnext:v15.65.4 + image: frappe/erpnext:v15 platform: linux/amd64 - command: ["nginx-entrypoint.sh"] - ports: - - "8080:8080" + networks: + - frappe_network + depends_on: + - websocket + deploy: + restart_policy: + condition: on-failure + command: + - nginx-entrypoint.sh environment: BACKEND: backend:8000 FRAPPE_SITE_NAME_HEADER: frontend @@ -130,21 +132,60 @@ services: volumes: - sites:/home/frappe/frappe-bench/sites - logs:/home/frappe/frappe-bench/logs + - apps:/home/frappe/frappe-bench/apps + ports: + - "8080:8080" + + queue-long: + image: frappe/erpnext:v15 + platform: linux/amd64 networks: - frappe_network - depends_on: - - websocket deploy: restart_policy: condition: on-failure - - websocket: - image: frappe/erpnext:v15.65.4 - platform: linux/amd64 - command: ["node", "/home/frappe/frappe-bench/apps/frappe/socketio.js"] + command: + - bench + - worker + - --queue + - long,default,short volumes: - sites:/home/frappe/frappe-bench/sites - logs:/home/frappe/frappe-bench/logs + - apps:/home/frappe/frappe-bench/apps + + queue-short: + image: frappe/erpnext:v15 + platform: linux/amd64 + networks: + - frappe_network + deploy: + restart_policy: + condition: on-failure + command: + - bench + - worker + - --queue + - short,default + volumes: + - sites:/home/frappe/frappe-bench/sites + - logs:/home/frappe/frappe-bench/logs + - apps:/home/frappe/frappe-bench/apps + + redis-queue: + image: redis:6.2-alpine + platform: linux/amd64 + networks: + - frappe_network + deploy: + restart_policy: + condition: on-failure + volumes: + - redis-queue-data:/data + + redis-cache: + image: redis:6.2-alpine + platform: linux/amd64 networks: - frappe_network deploy: @@ -152,49 +193,43 @@ services: condition: on-failure scheduler: - image: frappe/erpnext:v15.65.4 + image: frappe/erpnext:v15 platform: linux/amd64 - command: ["bench", "schedule"] - volumes: - - sites:/home/frappe/frappe-bench/sites - - logs:/home/frappe/frappe-bench/logs networks: - frappe_network deploy: restart_policy: condition: on-failure + command: + - bench + - schedule + volumes: + - sites:/home/frappe/frappe-bench/sites + - logs:/home/frappe/frappe-bench/logs + - apps:/home/frappe/frappe-bench/apps - queue-short: - image: frappe/erpnext:v15.65.4 + websocket: + image: frappe/erpnext:v15 platform: linux/amd64 - command: ["bench", "worker", "--queue", "short,default"] - volumes: - - sites:/home/frappe/frappe-bench/sites - - logs:/home/frappe/frappe-bench/logs networks: - frappe_network deploy: restart_policy: condition: on-failure - - queue-long: - image: frappe/erpnext:v15.65.4 - platform: linux/amd64 - command: ["bench", "worker", "--queue", "long,default,short"] + command: + - node + - /home/frappe/frappe-bench/apps/frappe/socketio.js volumes: - sites:/home/frappe/frappe-bench/sites - logs:/home/frappe/frappe-bench/logs - networks: - - frappe_network - deploy: - restart_policy: - condition: on-failure + - apps:/home/frappe/frappe-bench/apps volumes: db-data: redis-queue-data: sites: logs: + apps: networks: frappe_network: