From 072483e621d2ddb98eec62e81da7386fc59a7f73 Mon Sep 17 00:00:00 2001 From: Ilham Ridho Asysyifa'a Date: Mon, 23 Jun 2025 11:59:09 +0700 Subject: [PATCH] update: create custom pwd.yml --- apps-test-output.json | 14 +++ apps.json | 22 ++++ pwd.yml | 235 ++++++++++++++++++++---------------------- test.sh | 4 + 4 files changed, 150 insertions(+), 125 deletions(-) create mode 100644 apps-test-output.json create mode 100644 apps.json create mode 100644 test.sh diff --git a/apps-test-output.json b/apps-test-output.json new file mode 100644 index 00000000..0fdea490 --- /dev/null +++ b/apps-test-output.json @@ -0,0 +1,14 @@ +[ + { + "url": "https://github.com/frappe/erpnext", + "branch": "version-15" + }, + { + "url": "https://github.com/frappe/payments", + "branch": "version-15" + }, + { + "url": "https://{{ PAT }}@git.example.com/project/repository.git", + "branch": "main" + } +] \ No newline at end of file diff --git a/apps.json b/apps.json new file mode 100644 index 00000000..1c0d9f4c --- /dev/null +++ b/apps.json @@ -0,0 +1,22 @@ +[ + { + "url": "https://github.com/frappe/erpnext", + "branch": "version-15" + }, + { + "url": "https://github.com/frappe/payments", + "branch": "version-15" + }, + { + "url": "https://github.com/frappe/helpdesk", + "branch": "version-15" + }, + { + "url": "https://github.com/frappe/lending", + "branch": "version-15" + }, + { + "url": "https://github.com/frappe/hrms", + "branch": "version-15" + } +] \ No newline at end of file diff --git a/pwd.yml b/pwd.yml index 09960dd5..f5589ff1 100644 --- a/pwd.yml +++ b/pwd.yml @@ -1,13 +1,45 @@ version: "3" services: - backend: - image: frappe/erpnext:v15.65.2 + 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 - deploy: - restart_policy: - condition: on-failure + 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 + platform: linux/amd64 volumes: - sites:/home/frappe/frappe-bench/sites - logs:/home/frappe/frappe-bench/logs @@ -16,26 +48,24 @@ services: DB_PORT: "3306" MYSQL_ROOT_PASSWORD: admin MARIADB_ROOT_PASSWORD: admin - - configurator: - image: frappe/erpnext:v15.65.2 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; + condition: on-failure + + configurator: + image: frappe/erpnext:v15.65.4 + 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; environment: DB_HOST: db DB_PORT: "3306" @@ -45,73 +75,49 @@ services: volumes: - sites:/home/frappe/frappe-bench/sites - logs:/home/frappe/frappe-bench/logs - - create-site: - image: frappe/erpnext:v15.65.2 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 - 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 networks: - frappe_network - healthcheck: - test: mysqladmin ping -h localhost --password=admin - interval: 1s - retries: 20 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 - MARIADB_ROOT_PASSWORD: admin - volumes: - - db-data:/var/lib/mysql + condition: none frontend: - image: frappe/erpnext:v15.65.2 - networks: - - frappe_network - depends_on: - - websocket - deploy: - restart_policy: - condition: on-failure - command: - - nginx-entrypoint.sh + image: frappe/erpnext:v15.65.4 + platform: linux/amd64 + command: ["nginx-entrypoint.sh"] + ports: + - "8080:8080" environment: BACKEND: backend:8000 FRAPPE_SITE_NAME_HEADER: frontend @@ -124,53 +130,21 @@ services: volumes: - sites:/home/frappe/frappe-bench/sites - logs:/home/frappe/frappe-bench/logs - ports: - - "8080:8080" - - queue-long: - image: frappe/erpnext:v15.65.2 networks: - frappe_network + depends_on: + - websocket deploy: restart_policy: condition: on-failure - command: - - bench - - worker - - --queue - - long,default,short + + websocket: + image: frappe/erpnext:v15.65.4 + platform: linux/amd64 + command: ["node", "/home/frappe/frappe-bench/apps/frappe/socketio.js"] volumes: - sites:/home/frappe/frappe-bench/sites - logs:/home/frappe/frappe-bench/logs - - queue-short: - image: frappe/erpnext:v15.65.2 - 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 - - redis-queue: - image: redis:6.2-alpine - networks: - - frappe_network - deploy: - restart_policy: - condition: on-failure - volumes: - - redis-queue-data:/data - - redis-cache: - image: redis:6.2-alpine networks: - frappe_network deploy: @@ -178,32 +152,43 @@ services: condition: on-failure scheduler: - image: frappe/erpnext:v15.65.2 + image: frappe/erpnext:v15.65.4 + 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 - websocket: - image: frappe/erpnext:v15.65.2 + queue-short: + image: frappe/erpnext:v15.65.4 + 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 - command: - - node - - /home/frappe/frappe-bench/apps/frappe/socketio.js + + queue-long: + image: frappe/erpnext:v15.65.4 + platform: linux/amd64 + command: ["bench", "worker", "--queue", "long,default,short"] volumes: - sites:/home/frappe/frappe-bench/sites - logs:/home/frappe/frappe-bench/logs + networks: + - frappe_network + deploy: + restart_policy: + condition: on-failure volumes: db-data: diff --git a/test.sh b/test.sh new file mode 100644 index 00000000..31270cda --- /dev/null +++ b/test.sh @@ -0,0 +1,4 @@ +docker compose -f compose.yaml \ + -f overrides/compose.redis.yaml \ + -f overrides/compose.noproxy.yaml \ + config > ~/gitops/docker-compose.yaml \ No newline at end of file