Advertisement
Sch-Tim

Untitled

Apr 6th, 2024 (edited)
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
YAML 8.09 KB | None | 0 0
  1. version: "3"
  2.  
  3. services:
  4.   backend:
  5.     depends_on:
  6.       configurator:
  7.         condition: service_completed_successfully
  8.         required: true
  9.     image: ${IMAGE_NAME}:${IMAGE_TAG}
  10.     pull_policy: never
  11.     deploy:
  12.       restart_policy:
  13.         condition: on-failure
  14.     volumes:
  15.      - sites:/home/frappe/frappe-bench/sites
  16.       - logs:/home/frappe/frappe-bench/logs
  17.     networks:
  18.      - erpnext-network
  19.  
  20.   create-site:
  21.     image: ${IMAGE_NAME}:${IMAGE_TAG}
  22.     pull_policy: never
  23.     deploy:
  24.       restart_policy:
  25.         condition: none
  26.     volumes:
  27.      - sites:/home/frappe/frappe-bench/sites
  28.       - logs:/home/frappe/frappe-bench/logs
  29.     entrypoint:
  30.      - bash
  31.       - -c
  32.     command:
  33.      - >
  34.        wait-for-it -t 120 db:3306;
  35.         wait-for-it -t 120 redis-cache:6379;
  36.         wait-for-it -t 120 redis-queue:6379;
  37.         export start=`date +%s`;
  38.         until [[ -n `grep -hs ^ sites/common_site_config.json | jq -r ".db_host // empty"` ]] && \
  39.           [[ -n `grep -hs ^ sites/common_site_config.json | jq -r ".redis_cache // empty"` ]] && \
  40.           [[ -n `grep -hs ^ sites/common_site_config.json | jq -r ".redis_queue // empty"` ]];
  41.         do
  42.           echo "Waiting for sites/common_site_config.json to be created";
  43.           sleep 5;
  44.           if (( `date +%s`-start > 120 )); then
  45.             echo "could not find sites/common_site_config.json with required keys";
  46.             exit 1
  47.           fi
  48.         done;
  49.         echo "sites/common_site_config.json found";
  50.         bench new-site --no-mariadb-socket --admin-password=$ADMIN_PASSWORD --db-root-password=$DB_PASSWORD --install-app erpnext --install-app hrms --install-app payments --install-app erpnext_germany --set-default $SITE_NAME;
  51.     networks:
  52.      - erpnext-network
  53.  
  54.   configurator:
  55.     image: ${IMAGE_NAME}:${IMAGE_TAG}
  56.     pull_policy: never
  57.     deploy:
  58.       restart_policy:
  59.         condition: none
  60.     entrypoint:
  61.      - bash
  62.       - -c
  63.     command:
  64.      - >
  65.        ls -1 apps > sites/apps.txt;
  66.         bench set-config -g db_host $$DB_HOST;
  67.         bench set-config -gp db_port $$DB_PORT;
  68.         bench set-config -g redis_cache "redis://$$REDIS_CACHE";
  69.         bench set-config -g redis_queue "redis://$$REDIS_QUEUE";
  70.         bench set-config -gp socketio_port $$SOCKETIO_PORT;
  71.         bench set-config -gp background_workers $WORKER_COUNT;
  72.         bench set-config -g host_name "http://frontend:8080";
  73.        
  74.  
  75.     depends_on:
  76.       redis-cache:
  77.         condition: service_started
  78.         required: true
  79.       redis-queue:
  80.         condition: service_started
  81.         required: true
  82.       create-site:
  83.         condition: service_completed_successfully
  84.         required: true
  85.     environment:
  86.       DB_HOST: $DB_HOST
  87.       DB_PORT: $DB_HOST
  88.       REDIS_CACHE: $REDIS_CACHE:6379
  89.       REDIS_QUEUE: $REDIS_QUEUE:6379
  90.       SOCKETIO_PORT: "9000"
  91.     volumes:
  92.      - sites:/home/frappe/frappe-bench/sites
  93.       - logs:/home/frappe/frappe-bench/logs
  94.     networks:
  95.      - erpnext-network
  96.  
  97.   db:
  98.     image: mariadb:10.6
  99.     healthcheck:
  100.       test: mysqladmin ping -h $DB_HOST --password=$DB_PASSWORD
  101.       interval: 1s
  102.       retries: 15
  103.     deploy:
  104.       restart_policy:
  105.         condition: on-failure
  106.     command:
  107.      - --character-set-server=utf8mb4
  108.       - --collation-server=utf8mb4_unicode_ci
  109.       - --skip-character-set-client-handshake
  110.       - --skip-innodb-read-only-compressed # Temporary fix for MariaDB 10.6
  111.     hostname: erpnext-db
  112.     environment:
  113.       MARIADB_HOST: $DB_HOST
  114.       MARIADB_ROOT_PASSWORD: $DB_PASSWORD
  115.     volumes:
  116.      - db-data:/var/lib/mysql
  117.     networks:
  118.      - erpnext-network
  119.  
  120.   frontend:
  121.     image: ${IMAGE_NAME}:${IMAGE_TAG}
  122.     pull_policy: never
  123.     deploy:
  124.       restart_policy:
  125.         condition: on-failure
  126.     depends_on:
  127.       backend:
  128.         condition: service_started
  129.         required: true
  130.       websocket:
  131.         condition: service_started
  132.         required: true
  133.     command:
  134.      - nginx-entrypoint.sh
  135.     expose:
  136.      - "8080"
  137.     environment:
  138.       BACKEND: backend:8000
  139.       FRAPPE_SITE_NAME_HEADER: $SITE_NAME
  140.       SOCKETIO: websocket:9000
  141.       UPSTREAM_REAL_IP_ADDRESS: 127.0.0.1
  142.       UPSTREAM_REAL_IP_HEADER: X-Forwarded-For
  143.       UPSTREAM_REAL_IP_RECURSIVE: "off"
  144.       PROXY_READ_TIMEOUT: 600
  145.       CLIENT_MAX_BODY_SIZE: 50m
  146.     volumes:
  147.      - sites:/home/frappe/frappe-bench/sites
  148.       - logs:/home/frappe/frappe-bench/logs
  149.     labels:
  150.      - "traefik.enable=true"
  151.       - "traefik.http.routers.${TRAEFIK_SERVICE_NAME}.entrypoints=${TRAEFIK_HTTPS_ENTRYPOINT}"
  152.       - "traefik.http.routers.${TRAEFIK_SERVICE_NAME}.rule=Host(`${TRAEFIK_DOMAIN}`)"
  153.       - "traefik.http.routers.${TRAEFIK_SERVICE_NAME}.tls=true"
  154.       - "traefik.http.routers.${TRAEFIK_SERVICE_NAME}.tls.certresolver=${TRAEFIK_CERT_RESOLVER}"
  155.       - "traefik.http.routers.${TRAEFIK_SERVICE_NAME}.service=${TRAEFIK_SERVICE_NAME}"
  156.       - "traefik.http.services.${TRAEFIK_SERVICE_NAME}.loadbalancer.server.port=8080"
  157.       - "traefik.docker.network=${TRAEFIK_DOCKER_NETWORK}"
  158.     networks:
  159.      - traefik-network
  160.       - erpnext-network
  161.  
  162.   queue-long:
  163.     image: ${IMAGE_NAME}:${IMAGE_TAG}
  164.     pull_policy: never
  165.     deploy:
  166.       restart_policy:
  167.         condition: on-failure
  168.     depends_on:
  169.       configurator:
  170.         condition: service_completed_successfully
  171.         required: true
  172.     command:
  173.      - bench
  174.       - worker
  175.       - --queue
  176.       - long
  177.     volumes:
  178.      - sites:/home/frappe/frappe-bench/sites
  179.       - logs:/home/frappe/frappe-bench/logs
  180.     networks:
  181.      - erpnext-network
  182.  
  183.   queue-short:
  184.     image: ${IMAGE_NAME}:${IMAGE_TAG}
  185.     pull_policy: never
  186.     deploy:
  187.       restart_policy:
  188.         condition: on-failure
  189.     depends_on:
  190.       configurator:
  191.         condition: service_completed_successfully
  192.         required: true
  193.     command:
  194.      - bench
  195.       - worker
  196.       - --queue
  197.       - short
  198.     volumes:
  199.      - sites:/home/frappe/frappe-bench/sites
  200.       - logs:/home/frappe/frappe-bench/logs
  201.     networks:
  202.      - erpnext-network
  203.  
  204.   queue-default:
  205.     image: ${IMAGE_NAME}:${IMAGE_TAG}
  206.     pull_policy: never
  207.     deploy:
  208.       restart_policy:
  209.         condition: on-failure
  210.     depends_on:
  211.       configurator:
  212.         condition: service_completed_successfully
  213.         required: true
  214.     command:
  215.      - bench
  216.       - worker
  217.       - --queue
  218.       - default
  219.     volumes:
  220.      - sites:/home/frappe/frappe-bench/sites
  221.       - logs:/home/frappe/frappe-bench/logs
  222.     networks:
  223.      - erpnext-network
  224.  
  225.   redis-queue:
  226.     image: redis:6.2-alpine
  227.     deploy:
  228.       restart_policy:
  229.         condition: on-failure
  230.     volumes:
  231.      - redis-queue-data:/data
  232.     networks:
  233.      - erpnext-network
  234.  
  235.   redis-cache:
  236.     image: redis:6.2-alpine
  237.     deploy:
  238.       restart_policy:
  239.         condition: on-failure
  240.     volumes:
  241.      - redis-cache-data:/data
  242.     networks:
  243.      - erpnext-network
  244.  
  245.   scheduler:
  246.     image: ${IMAGE_NAME}:${IMAGE_TAG}
  247.     pull_policy: never
  248.     deploy:
  249.       restart_policy:
  250.         condition: on-failure
  251.     depends_on:
  252.       configurator:
  253.         condition: service_completed_successfully
  254.         required: true
  255.     command:
  256.      - bench
  257.       - schedule
  258.     volumes:
  259.      - sites:/home/frappe/frappe-bench/sites
  260.       - logs:/home/frappe/frappe-bench/logs
  261.     networks:
  262.      - erpnext-network
  263.  
  264.   websocket:
  265.     image: ${IMAGE_NAME}:${IMAGE_TAG}
  266.     pull_policy: never
  267.     depends_on:
  268.       configurator:
  269.         condition: service_completed_successfully
  270.         required: true
  271.     deploy:
  272.       restart_policy:
  273.         condition: on-failure
  274.     command:
  275.      - node
  276.       - /home/frappe/frappe-bench/apps/frappe/socketio.js
  277.     volumes:
  278.      - sites:/home/frappe/frappe-bench/sites
  279.       - logs:/home/frappe/frappe-bench/logs
  280.  
  281.     networks:
  282.      - erpnext-network
  283.  
  284. volumes:
  285.   db-data:
  286.   redis-queue-data:
  287.   redis-cache-data:
  288.   sites:
  289.   logs:
  290. networks:
  291.   traefik-network:
  292.     name: ${TRAEFIK_DOCKER_NETWORK}
  293.     external: true
  294.   erpnext-network:
  295.     name: ${ERPNEXT_NETWORK}
  296.     driver: bridge
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement