From eaefb4817fea701c9de6a24308bd2984a63c77f5 Mon Sep 17 00:00:00 2001 From: Lev Vereshchagin Date: Mon, 13 Dec 2021 19:39:48 +0300 Subject: [PATCH] Update compose --- compose.yml | 257 +++++++++++++++++++--------------------------------- 1 file changed, 94 insertions(+), 163 deletions(-) diff --git a/compose.yml b/compose.yml index d6fd92d9..a359cf64 100644 --- a/compose.yml +++ b/compose.yml @@ -1,180 +1,111 @@ -version: "3" +version: "3.9" services: - traefik: - image: "traefik:v2.2" - command: - - "--providers.docker=true" - - "--providers.docker.exposedbydefault=false" - - "--entrypoints.web.address=:80" - - "--entrypoints.websecure.address=:443" - - "--certificatesresolvers.myresolver.acme.httpchallenge=true" - - "--certificatesresolvers.myresolver.acme.httpchallenge.entrypoint=web" - - "--certificatesresolvers.myresolver.acme.email=${LETSENCRYPT_EMAIL}" - - "--certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json" - labels: - # enable traefik - - "traefik.enable=true" - # global redirect to https for production only - - "${HTTPS_REDIRECT_RULE_LABEL}" - - "${HTTPS_REDIRECT_ENTRYPOINT_LABEL}" - - "${HTTPS_REDIRECT_MIDDLEWARE_LABEL}" - # middleware redirect for production only - - "${HTTPS_USE_REDIRECT_MIDDLEWARE_LABEL}" - ports: - - "80:80" - - "443:443" - volumes: - - cert-vol:/letsencrypt - - /var/run/docker.sock:/var/run/docker.sock:ro - userns_mode: "host" - - erpnext-nginx: - image: frappe/erpnext-nginx:${ERPNEXT_VERSION} - restart: on-failure + backend: + image: frappe/frappe-worker:${FRAPPE_VERSION} environment: - - FRAPPE_PY=erpnext-python - - FRAPPE_PY_PORT=8000 - - FRAPPE_SOCKETIO=frappe-socketio - - SOCKETIO_PORT=9000 - - SKIP_NGINX_TEMPLATE_GENERATION=${SKIP_NGINX_TEMPLATE_GENERATION} - labels: - - "traefik.enable=true" - - "traefik.http.routers.erpnext-nginx.rule=Host(${SITES})" - - "${ENTRYPOINT_LABEL}" - - "${CERT_RESOLVER_LABEL}" - - "traefik.http.services.erpnext-nginx.loadbalancer.server.port=8080" + DB_HOST: db + DB_PORT: 3306 + REDIS_CACHE: redis:6379/0 + REDIS_QUEUE: redis:6379/1 + REDIS_SOCKETIO: redis:6379/2 + SOCKETIO_PORT: 9000 volumes: - - sites-vol:/var/www/html/sites:rw - - assets-vol:/assets:rw - - erpnext-python: - image: frappe/erpnext-worker:${ERPNEXT_VERSION} - restart: on-failure - environment: - - MARIADB_HOST=${MARIADB_HOST} - - REDIS_CACHE=redis-cache:6379 - - REDIS_QUEUE=redis-queue:6379 - - REDIS_SOCKETIO=redis-socketio:6379 - - SOCKETIO_PORT=9000 - - AUTO_MIGRATE=1 - - WORKER_CLASS=${WORKER_CLASS} - volumes: - - sites-vol:/home/frappe/frappe-bench/sites:rw - - assets-vol:/home/frappe/frappe-bench/sites/assets:rw - - frappe-socketio: - image: frappe/frappe-socketio:${FRAPPE_VERSION} - restart: on-failure + - sites:/home/frappe/frappe-bench/sites depends_on: - - redis-socketio - volumes: - - sites-vol:/home/frappe/frappe-bench/sites:rw - - logs-vol:/home/frappe/frappe-bench/logs:rw + db: + condition: service_healthy - erpnext-worker-default: - image: frappe/erpnext-worker:${ERPNEXT_VERSION} - restart: on-failure - command: worker - depends_on: - - redis-queue - - redis-cache - volumes: - - sites-vol:/home/frappe/frappe-bench/sites:rw - - logs-vol:/home/frappe/frappe-bench/logs:rw - - erpnext-worker-short: - image: frappe/erpnext-worker:${ERPNEXT_VERSION} - restart: on-failure - command: worker - environment: - - WORKER_TYPE=short - depends_on: - - redis-queue - - redis-cache - volumes: - - sites-vol:/home/frappe/frappe-bench/sites:rw - - logs-vol:/home/frappe/frappe-bench/logs:rw - - erpnext-worker-long: - image: frappe/erpnext-worker:${ERPNEXT_VERSION} - restart: on-failure - command: worker - environment: - - WORKER_TYPE=long - depends_on: - - redis-queue - - redis-cache - volumes: - - sites-vol:/home/frappe/frappe-bench/sites:rw - - erpnext-schedule: - image: frappe/erpnext-worker:${ERPNEXT_VERSION} - restart: on-failure - command: schedule - depends_on: - - redis-queue - - redis-cache - volumes: - - sites-vol:/home/frappe/frappe-bench/sites:rw - - logs-vol:/home/frappe/frappe-bench/logs:rw - - redis-cache: - image: redis:latest - restart: on-failure - volumes: - - redis-cache-vol:/data - - redis-queue: - image: redis:latest - restart: on-failure - volumes: - - redis-queue-vol:/data - - redis-socketio: - image: redis:latest - restart: on-failure - volumes: - - redis-socketio-vol:/data - - mariadb: + db: image: mariadb:10.6 - restart: on-failure + healthcheck: + test: mysqladmin ping -h localhost --password=${DB_PASSWORD} + interval: 1s + retries: 15 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 + - --skip-innodb-read-only-compressed environment: - - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD} - # Sometimes db initialization takes longer than 10 seconds and site-creator goes away. - # Frappe doesn't use CONVERT_TZ() function that requires time zone info, so we can just skip it. - - MYSQL_INITDB_SKIP_TZINFO=1 + MYSQL_ROOT_PASSWORD: ${DB_PASSWORD} volumes: - - mariadb-vol:/var/lib/mysql + - db:/var/lib/mysql - site-creator: - image: frappe/erpnext-worker:${ERPNEXT_VERSION} - restart: "no" - command: new - depends_on: - - erpnext-python - environment: - - SITE_NAME=${SITE_NAME} - - DB_ROOT_USER=${DB_ROOT_USER} - - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD} - - ADMIN_PASSWORD=${ADMIN_PASSWORD} - - INSTALL_APPS=${INSTALL_APPS} + redis: + image: redis:6.2-alpine volumes: - - sites-vol:/home/frappe/frappe-bench/sites:rw - - logs-vol:/home/frappe/frappe-bench/logs:rw + - redis:/data + + frontend: + image: frappe/frappe-nginx:${FRAPPE_VERSION} + depends_on: + - backend + - websocket + environment: + BACKEND: backend:8000 + SOCKETIO: websocket:9000 + FRAPPE_SITE_NAME_HEADER: $$host + volumes: + - sites:/usr/share/nginx/html/sites + labels: + - traefik.enable=true + - traefik.http.services.frontend.loadbalancer.server.port=80 + - traefik.http.routers.frontend-http.entrypoints=web + - traefik.http.routers.frontend-http.rule=HostRegexp(`{any:.+}`) + + proxy: + image: traefik:2.5 + command: + - --providers.docker + - --providers.docker.exposedbydefault=false + - --entrypoints.web.address=:80 + ports: + - 80:80 + volumes: + - /var/run/docker.sock:/var/run/docker.sock:ro + userns_mode: host + + websocket: + image: frappe/frappe-socketio:${FRAPPE_VERSION} + depends_on: + - backend + volumes: + - sites:/home/frappe/frappe-bench/sites + + queue-short: + image: frappe/frappe-worker:${FRAPPE_VERSION} + command: bench worker --queue short + volumes: + - sites:/home/frappe/frappe-bench/sites + depends_on: + - backend + + queue-default: + image: frappe/frappe-worker:${FRAPPE_VERSION} + command: bench worker --queue default + volumes: + - sites:/home/frappe/frappe-bench/sites + depends_on: + - backend + + queue-long: + image: frappe/frappe-worker:${FRAPPE_VERSION} + command: bench worker --queue long + volumes: + - sites:/home/frappe/frappe-bench/sites + depends_on: + - backend + + scheduler: + image: frappe/frappe-worker:${FRAPPE_VERSION} + command: bench schedule + volumes: + - sites:/home/frappe/frappe-bench/sites + depends_on: + - backend volumes: - mariadb-vol: - redis-cache-vol: - redis-queue-vol: - redis-socketio-vol: - assets-vol: - sites-vol: - cert-vol: - logs-vol: + sites: + db: + redis: