diff --git a/pwd.yml b/pwd.yml index c6f0327d..0c789184 100644 --- a/pwd.yml +++ b/pwd.yml @@ -1,4 +1,4 @@ -version: "3.8" +version: "3" services: traefik: @@ -18,7 +18,7 @@ services: ports: - "80:80" - "443:443" - - "8081:8080" # Dashboard access + - "8081:8080" # optional: dashboard access volumes: - /var/run/docker.sock:/var/run/docker.sock:ro - traefik-letsencrypt:/letsencrypt @@ -27,12 +27,14 @@ services: restart: unless-stopped backend: - image: frappe/erpnext:v15.7.0 # Using a more specific version + image: frappe/erpnext:v15.74.0 networks: - frappe_network deploy: restart_policy: condition: on-failure + # extra_hosts: + # - "erp-sb1.mitrabisnisdigital.com:host-gateway" volumes: - sites:/home/frappe/frappe-bench/sites - logs:/home/frappe/frappe-bench/logs @@ -43,7 +45,7 @@ services: MARIADB_ROOT_PASSWORD: admin configurator: - image: frappe/erpnext:v15.7.0 + image: frappe/erpnext:v15.74.0 networks: - frappe_network deploy: @@ -72,49 +74,60 @@ services: - logs:/home/frappe/frappe-bench/logs create-site-1: - image: frappe/erpnext:v15.7.0 + image: frappe/erpnext:v15.74.0 networks: - frappe_network deploy: restart_policy: condition: none - depends_on: - configurator: - condition: service_completed_successfully - db: - condition: service_healthy volumes: - sites:/home/frappe/frappe-bench/sites - logs:/home/frappe/frappe-bench/logs - entrypoint: ["/bin/bash", "-c"] + 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; - bench new-site --no-mariadb-socket --mariadb-root-username=root --mariadb-root-password=admin --install-app erpnext --admin-password=admin --set-default erp-sb1.mitrabisnisdigital.com; - bench --site erp-sb1.mitrabisnisdigital.com set-config host_name https://erp-sb1.mitrabisnisdigital.com; - + 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 erp-sb1.mitrabisnisdigital.com; + **bench --site erp-sb1.mitrabisnisdigital.com set-config host_name http://erp-sb1.mitrabisnisdigital.com;** + create-site-2: - image: frappe/erpnext:v15.7.0 + image: frappe/erpnext:v15.74.0 networks: - frappe_network + depends_on: + - configurator deploy: restart_policy: condition: none - depends_on: - create-site-1: - condition: service_completed_successfully # FIX: Ensure this runs AFTER site 1 is created volumes: - sites:/home/frappe/frappe-bench/sites - logs:/home/frappe/frappe-bench/logs - entrypoint: ["/bin/bash", "-c"] + 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; - bench new-site --no-mariadb-socket --mariadb-root-username=root --mariadb-root-password=admin --install-app erpnext --admin-password=admin erp-sb2.mitrabisnisdigital.com; - bench --site erp-sb2.mitrabisnisdigital.com set-config host_name https://erp-sb2.mitrabisnisdigital.com; + bench new-site --mariadb-user-host-login-scope='%' --admin-password=admin --db-root-username=root --db-root-password=admin --install-app erpnext --set-default erp-sb2.mitrabisnisdigital.com; + bench --site erp-sb2.mitrabisnisdigital.com set-config host_name http://erp-sb2.mitrabisnisdigital.com; db: image: mariadb:10.6 @@ -131,7 +144,7 @@ services: - --character-set-server=utf8mb4 - --collation-server=utf8mb4_unicode_ci - --skip-character-set-client-handshake - - --skip-innodb-read-only-compressed + - --skip-innodb-read-only-compressed # Temporary fix for MariaDB 10.6 environment: MYSQL_ROOT_PASSWORD: admin MARIADB_ROOT_PASSWORD: admin @@ -139,12 +152,11 @@ services: - db-data:/var/lib/mysql frontend: - image: frappe/erpnext:v15.7.0 + image: frappe/erpnext:v15.74.0 networks: - frappe_network depends_on: - websocket - - backend deploy: restart_policy: condition: on-failure @@ -161,35 +173,50 @@ services: CLIENT_MAX_BODY_SIZE: 50m labels: - "traefik.enable=true" - # FIX: Define one service for the frontend container - - "traefik.http.services.erpnext-frontend.loadbalancer.server.port=8080" - - # FIX: Router for the first site + # Labels for the first site - "traefik.http.routers.erp-sb1.rule=Host(`erp-sb1.mitrabisnisdigital.com`)" - "traefik.http.routers.erp-sb1.entrypoints=websecure" - "traefik.http.routers.erp-sb1.tls.certresolver=myresolver" - - "traefik.http.routers.erp-sb1.service=erpnext-frontend" - - # FIX: Router for the second site - - "traefik.http.routers.erp-sb2.rule=Host(`erp-sb2.mitrabisnisdigital.com`)" - - "traefik.http.routers.erp-sb2.entrypoints=websecure" - - "traefik.http.routers.erp-sb2.tls.certresolver=myresolver" - - "traefik.http.routers.erp-sb2.service=erpnext-frontend" + - "traefik.http.services.erp-sb1.loadbalancer.server.port=8080" + # Labels for the second site + - "traefik.http.routers.erp-2.rule=Host(`erp-sb2.mitrabisnisdigital.com`)" + - "traefik.http.routers.erp-2.entrypoints=websecure" + - "traefik.http.routers.erp-2.tls.certresolver=myresolver" + - "traefik.http.services.erp-2.loadbalancer.server.port=8080" volumes: - sites:/home/frappe/frappe-bench/sites - logs:/home/frappe/frappe-bench/logs - # FIX: Removed redundant exposed port - - # ... (queue-long, queue-short, redis-*, scheduler, websocket services remain the same) ... + ports: + - "8080:8080" queue-long: - image: frappe/erpnext:v15.7.0 + image: frappe/erpnext:v15.74.0 networks: - frappe_network deploy: restart_policy: condition: on-failure - command: ["bench", "worker", "--queue", "long,default,short"] + command: + - bench + - worker + - --queue + - long,default,short + volumes: + - sites:/home/frappe/frappe-bench/sites + - logs:/home/frappe/frappe-bench/logs + + queue-short: + image: frappe/erpnext:v15.74.0 + 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 @@ -211,29 +238,31 @@ services: deploy: restart_policy: condition: on-failure - volumes: - - redis-cache-data:/data scheduler: - image: frappe/erpnext:v15.7.0 + image: frappe/erpnext:v15.74.0 networks: - frappe_network deploy: restart_policy: condition: on-failure - command: ["bench", "schedule"] + command: + - bench + - schedule volumes: - sites:/home/frappe/frappe-bench/sites - logs:/home/frappe/frappe-bench/logs websocket: - image: frappe/erpnext:v15.7.0 + image: frappe/erpnext:v15.74.0 networks: - frappe_network deploy: restart_policy: condition: on-failure - command: ["node", "/home/frappe/frappe-bench/apps/frappe/socketio.js"] + command: + - node + - /home/frappe/frappe-bench/apps/frappe/socketio.js volumes: - sites:/home/frappe/frappe-bench/sites - logs:/home/frappe/frappe-bench/logs @@ -241,11 +270,10 @@ services: volumes: db-data: redis-queue-data: - redis-cache-data: sites: logs: traefik-letsencrypt: networks: frappe_network: - driver: bridge \ No newline at end of file + driver: bridge