update: create custom pwd.yml

This commit is contained in:
Ilham Ridho Asysyifa'a 2025-06-23 11:59:09 +07:00
parent ce36b51e81
commit 072483e621
4 changed files with 150 additions and 125 deletions

14
apps-test-output.json Normal file
View file

@ -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"
}
]

22
apps.json Normal file
View file

@ -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"
}
]

229
pwd.yml
View file

@ -1,13 +1,45 @@
version: "3" version: "3"
services: services:
backend: db:
image: frappe/erpnext:v15.65.2 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: networks:
- frappe_network - frappe_network
deploy: healthcheck:
restart_policy: test: mysqladmin ping -h localhost --password=admin
condition: on-failure 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: volumes:
- sites:/home/frappe/frappe-bench/sites - sites:/home/frappe/frappe-bench/sites
- logs:/home/frappe/frappe-bench/logs - logs:/home/frappe/frappe-bench/logs
@ -16,26 +48,24 @@ services:
DB_PORT: "3306" DB_PORT: "3306"
MYSQL_ROOT_PASSWORD: admin MYSQL_ROOT_PASSWORD: admin
MARIADB_ROOT_PASSWORD: admin MARIADB_ROOT_PASSWORD: admin
configurator:
image: frappe/erpnext:v15.65.2
networks: networks:
- frappe_network - frappe_network
deploy: deploy:
restart_policy: restart_policy:
condition: none condition: on-failure
entrypoint:
- bash configurator:
- -c image: frappe/erpnext:v15.65.4
command: platform: linux/amd64
- > entrypoint: ["bash", "-c"]
ls -1 apps > sites/apps.txt; command: >
bench set-config -g db_host $$DB_HOST; ls -1 apps > sites/apps.txt &&
bench set-config -gp db_port $$DB_PORT; bench set-config -g db_host $DB_HOST &&
bench set-config -g redis_cache "redis://$$REDIS_CACHE"; bench set-config -gp db_port $DB_PORT &&
bench set-config -g redis_queue "redis://$$REDIS_QUEUE"; bench set-config -g redis_cache redis://$REDIS_CACHE &&
bench set-config -g redis_socketio "redis://$$REDIS_QUEUE"; bench set-config -g redis_queue redis://$REDIS_QUEUE &&
bench set-config -gp socketio_port $$SOCKETIO_PORT; bench set-config -g redis_socketio redis://$REDIS_QUEUE &&
bench set-config -gp socketio_port $SOCKETIO_PORT;
environment: environment:
DB_HOST: db DB_HOST: db
DB_PORT: "3306" DB_PORT: "3306"
@ -45,73 +75,49 @@ services:
volumes: volumes:
- sites:/home/frappe/frappe-bench/sites - sites:/home/frappe/frappe-bench/sites
- logs:/home/frappe/frappe-bench/logs - logs:/home/frappe/frappe-bench/logs
create-site:
image: frappe/erpnext:v15.65.2
networks: networks:
- frappe_network - frappe_network
deploy: deploy:
restart_policy: restart_policy:
condition: none condition: none
volumes:
- sites:/home/frappe/frappe-bench/sites create-site:
- logs:/home/frappe/frappe-bench/logs image: frappe/erpnext:v15.65.4
entrypoint: platform: linux/amd64
- bash entrypoint: ["bash", "-c"]
- -c command: >
command: wait-for-it -t 120 db:3306 &&
- > wait-for-it -t 120 redis-cache:6379 &&
wait-for-it -t 120 db:3306; wait-for-it -t 120 redis-queue:6379 &&
wait-for-it -t 120 redis-cache:6379; export start=$(date +%s);
wait-for-it -t 120 redis-queue:6379; until [[ -n $(grep -hs ^ sites/common_site_config.json | jq -r ".db_host // empty") ]] &&
export start=`date +%s`; [[ -n $(grep -hs ^ sites/common_site_config.json | jq -r ".redis_cache // empty") ]] &&
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_queue // 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 do
echo "Waiting for sites/common_site_config.json to be created"; echo "Waiting for sites/common_site_config.json to be created";
sleep 5; sleep 5;
if (( `date +%s`-start > 120 )); then if (( $(date +%s) - start > 120 )); then
echo "could not find sites/common_site_config.json with required keys"; echo "common_site_config.json not ready";
exit 1 exit 1;
fi fi;
done; done;
echo "sites/common_site_config.json found"; 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; 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:
db: - sites:/home/frappe/frappe-bench/sites
image: mariadb:10.6 - logs:/home/frappe/frappe-bench/logs
networks: networks:
- frappe_network - frappe_network
healthcheck:
test: mysqladmin ping -h localhost --password=admin
interval: 1s
retries: 20
deploy: deploy:
restart_policy: restart_policy:
condition: on-failure condition: none
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: frontend:
image: frappe/erpnext:v15.65.2 image: frappe/erpnext:v15.65.4
networks: platform: linux/amd64
- frappe_network command: ["nginx-entrypoint.sh"]
depends_on: ports:
- websocket - "8080:8080"
deploy:
restart_policy:
condition: on-failure
command:
- nginx-entrypoint.sh
environment: environment:
BACKEND: backend:8000 BACKEND: backend:8000
FRAPPE_SITE_NAME_HEADER: frontend FRAPPE_SITE_NAME_HEADER: frontend
@ -124,53 +130,21 @@ services:
volumes: volumes:
- sites:/home/frappe/frappe-bench/sites - sites:/home/frappe/frappe-bench/sites
- logs:/home/frappe/frappe-bench/logs - logs:/home/frappe/frappe-bench/logs
ports:
- "8080:8080"
queue-long:
image: frappe/erpnext:v15.65.2
networks: networks:
- frappe_network - frappe_network
depends_on:
- websocket
deploy: deploy:
restart_policy: restart_policy:
condition: on-failure condition: on-failure
command:
- bench websocket:
- worker image: frappe/erpnext:v15.65.4
- --queue platform: linux/amd64
- long,default,short command: ["node", "/home/frappe/frappe-bench/apps/frappe/socketio.js"]
volumes: volumes:
- sites:/home/frappe/frappe-bench/sites - sites:/home/frappe/frappe-bench/sites
- logs:/home/frappe/frappe-bench/logs - 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: networks:
- frappe_network - frappe_network
deploy: deploy:
@ -178,32 +152,43 @@ services:
condition: on-failure condition: on-failure
scheduler: 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: networks:
- frappe_network - frappe_network
deploy: deploy:
restart_policy: restart_policy:
condition: on-failure condition: on-failure
command:
- bench
- schedule
volumes:
- sites:/home/frappe/frappe-bench/sites
- logs:/home/frappe/frappe-bench/logs
websocket: queue-short:
image: frappe/erpnext:v15.65.2 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: networks:
- frappe_network - frappe_network
deploy: deploy:
restart_policy: restart_policy:
condition: on-failure condition: on-failure
command:
- node queue-long:
- /home/frappe/frappe-bench/apps/frappe/socketio.js image: frappe/erpnext:v15.65.4
platform: linux/amd64
command: ["bench", "worker", "--queue", "long,default,short"]
volumes: volumes:
- sites:/home/frappe/frappe-bench/sites - sites:/home/frappe/frappe-bench/sites
- logs:/home/frappe/frappe-bench/logs - logs:/home/frappe/frappe-bench/logs
networks:
- frappe_network
deploy:
restart_policy:
condition: on-failure
volumes: volumes:
db-data: db-data:

4
test.sh Normal file
View file

@ -0,0 +1,4 @@
docker compose -f compose.yaml \
-f overrides/compose.redis.yaml \
-f overrides/compose.noproxy.yaml \
config > ~/gitops/docker-compose.yaml