services: # =================== # MariaDB Database # =================== mariadb: image: mariadb:10.11 container_name: didi-mariadb restart: unless-stopped environment: MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:?seteaza MYSQL_ROOT_PASSWORD in .env} MYSQL_CHARACTER_SET_SERVER: utf8mb4 MYSQL_COLLATION_SERVER: utf8mb4_unicode_ci volumes: - mariadb-data:/var/lib/mysql - ./mariadb-init:/docker-entrypoint-initdb.d ports: - "127.0.0.1:3307:3306" command: - --character-set-server=utf8mb4 - --collation-server=utf8mb4_unicode_ci - --skip-character-set-client-handshake - --skip-innodb-read-only-compressed - --innodb-buffer-pool-size=512M - --innodb-log-file-size=64M healthcheck: test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"] interval: 10s timeout: 5s retries: 5 networks: - didi-network # =================== # Redis Cache # =================== redis-cache: image: redis:7-alpine container_name: didi-redis-cache restart: unless-stopped volumes: - redis-cache-data:/data networks: - didi-network # =================== # Redis Queue # =================== redis-queue: image: redis:7-alpine container_name: didi-redis-queue restart: unless-stopped volumes: - redis-queue-data:/data networks: - didi-network # =================== # ERPNext Backend # =================== erpnext: image: frappe/erpnext:${ERPNEXT_VERSION:-v15} container_name: didi-erpnext restart: unless-stopped depends_on: mariadb: condition: service_healthy redis-cache: condition: service_started redis-queue: condition: service_started entrypoint: ["/bin/bash", "/home/frappe/entrypoint.sh"] environment: DB_HOST: mariadb DB_PORT: "3306" REDIS_CACHE: redis://redis-cache:6379 REDIS_QUEUE: redis://redis-queue:6379 SOCKETIO_PORT: "9000" volumes: - erpnext-sites:/home/frappe/frappe-bench/sites - erpnext-logs:/home/frappe/frappe-bench/logs - ./didi_custom:/home/frappe/frappe-bench/apps/didi_custom - ./nginx.conf:/etc/nginx/conf.d/erpnext.conf:ro - ./bin/entrypoint.sh:/home/frappe/entrypoint.sh:ro - ./bin/start-bench-service.sh:/home/frappe/start-bench-service.sh:ro ports: - "127.0.0.1:${ERPNEXT_PORT:-8082}:8080" networks: - didi-network # =================== # Frappe Queue Workers # =================== queue-short: image: frappe/erpnext:${ERPNEXT_VERSION:-v15} container_name: didi-queue-short restart: unless-stopped depends_on: - erpnext entrypoint: ["/bin/bash", "/home/frappe/start-bench-service.sh"] command: ["bench", "worker", "--queue", "short"] volumes: - erpnext-sites:/home/frappe/frappe-bench/sites - erpnext-logs:/home/frappe/frappe-bench/logs - ./didi_custom:/home/frappe/frappe-bench/apps/didi_custom - ./bin/start-bench-service.sh:/home/frappe/start-bench-service.sh:ro networks: - didi-network queue-long: image: frappe/erpnext:${ERPNEXT_VERSION:-v15} container_name: didi-queue-long restart: unless-stopped depends_on: - erpnext entrypoint: ["/bin/bash", "/home/frappe/start-bench-service.sh"] command: ["bench", "worker", "--queue", "long"] volumes: - erpnext-sites:/home/frappe/frappe-bench/sites - erpnext-logs:/home/frappe/frappe-bench/logs - ./didi_custom:/home/frappe/frappe-bench/apps/didi_custom - ./bin/start-bench-service.sh:/home/frappe/start-bench-service.sh:ro networks: - didi-network queue-default: image: frappe/erpnext:${ERPNEXT_VERSION:-v15} container_name: didi-queue-default restart: unless-stopped depends_on: - erpnext entrypoint: ["/bin/bash", "/home/frappe/start-bench-service.sh"] command: ["bench", "worker", "--queue", "default"] volumes: - erpnext-sites:/home/frappe/frappe-bench/sites - erpnext-logs:/home/frappe/frappe-bench/logs - ./didi_custom:/home/frappe/frappe-bench/apps/didi_custom - ./bin/start-bench-service.sh:/home/frappe/start-bench-service.sh:ro networks: - didi-network # =================== # Frappe Scheduler # =================== scheduler: image: frappe/erpnext:${ERPNEXT_VERSION:-v15} container_name: didi-scheduler restart: unless-stopped depends_on: - erpnext entrypoint: ["/bin/bash", "/home/frappe/start-bench-service.sh"] command: ["bench", "schedule"] volumes: - erpnext-sites:/home/frappe/frappe-bench/sites - erpnext-logs:/home/frappe/frappe-bench/logs - ./didi_custom:/home/frappe/frappe-bench/apps/didi_custom - ./bin/start-bench-service.sh:/home/frappe/start-bench-service.sh:ro networks: - didi-network volumes: mariadb-data: redis-cache-data: redis-queue-data: erpnext-sites: erpnext-logs: networks: didi-network: external: true