From 66626a6a018b04531f97f92f40620b6d48e158f4 Mon Sep 17 00:00:00 2001 From: Anatoliy Poloz Date: Wed, 28 Feb 2024 11:42:27 +0300 Subject: [PATCH] supervisord added for laravel queue --- docker-compose.yml | 176 ++++++++++++++------------ phpdocker/php-fpm/Dockerfile | 21 +-- phpdocker/php-fpm/laravel-worker.conf | 23 ++++ 3 files changed, 127 insertions(+), 93 deletions(-) create mode 100644 phpdocker/php-fpm/laravel-worker.conf diff --git a/docker-compose.yml b/docker-compose.yml index 1486c25..6e32d09 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,90 +1,100 @@ --- -version: '3.1' +version: "3.1" services: - soketi: - image: 'quay.io/soketi/soketi:latest-16-alpine' - environment: - SOKETI_DEBUG: ${SOKETI_DEBUG} - SOKETI_METRICS_SERVER_PORT: ${SOKETI_METRICS_SERVER_PORT} - SOKETI_DEFAULT_APP_ID: ${SOKETI_DEFAULT_APP_ID} - SOKETI_DEFAULT_APP_KEY: ${SOKETI_DEFAULT_APP_KEY} - SOKETI_DEFAULT_APP_SECRET: ${SOKETI_DEFAULT_APP_SECRET} - SOKETI_DEFAULT_APP_ENABLE_CLIENT_MESSAGES: ${SOKETI_DEFAULT_APP_ENABLE_CLIENT_MESSAGES} - SOKETI_DEFAULT_APP_USER_AUTHENTICATION: ${SOKETI_DEFAULT_APP_USER_AUTHENTICATION} - ports: - - '${SOKETI_PORT:-6001}:6001' - - '${SOKETI_METRICS_SERVER_PORT:-9601}:9601' - networks: - ns-eatvio: - ipv4_address: 172.118.0.5 - labels: - - "traefik.enable=false" - restart: always + soketi: + image: "quay.io/soketi/soketi:latest-16-alpine" + environment: + SOKETI_DEBUG: ${SOKETI_DEBUG} + SOKETI_METRICS_SERVER_PORT: ${SOKETI_METRICS_SERVER_PORT} + SOKETI_DEFAULT_APP_ID: ${SOKETI_DEFAULT_APP_ID} + SOKETI_DEFAULT_APP_KEY: ${SOKETI_DEFAULT_APP_KEY} + SOKETI_DEFAULT_APP_SECRET: ${SOKETI_DEFAULT_APP_SECRET} + SOKETI_DEFAULT_APP_ENABLE_CLIENT_MESSAGES: ${SOKETI_DEFAULT_APP_ENABLE_CLIENT_MESSAGES} + SOKETI_DEFAULT_APP_USER_AUTHENTICATION: ${SOKETI_DEFAULT_APP_USER_AUTHENTICATION} + ports: + - "${SOKETI_PORT:-6001}:6001" + - "${SOKETI_METRICS_SERVER_PORT:-9601}:9601" + networks: + ns-eatvio: + ipv4_address: 172.118.0.5 + labels: + - "traefik.enable=false" + restart: always - mysql: - image: 'mysql:8.0' - working_dir: /application - networks: - ns-eatvio: - ipv4_address: 172.118.0.3 - volumes: - - '.:/application' - - './mysql_data:/var/lib/mysql' - environment: - MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} - MYSQL_DATABASE: ${MYSQL_DATABASE} - MYSQL_USER: ${MYSQL_USER} - MYSQL_PASSWORD: ${MYSQL_PASSWORD} - ports: - - '1094:3306' - labels: - - "traefik.enable=false" - restart: always + mysql: + image: "mysql:8.0" + working_dir: /application + networks: + ns-eatvio: + ipv4_address: 172.118.0.3 + volumes: + - ".:/application" + - "./mysql_data:/var/lib/mysql" + environment: + MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} + MYSQL_DATABASE: ${MYSQL_DATABASE} + MYSQL_USER: ${MYSQL_USER} + MYSQL_PASSWORD: ${MYSQL_PASSWORD} + ports: + - "1094:3306" + labels: + - "traefik.enable=false" + restart: always - php-fpm: - build: phpdocker/php-fpm - working_dir: /application - networks: - ns-eatvio: - ipv4_address: 172.118.0.2 - volumes: - - './app:/application' - - './phpdocker/php-fpm/php-ini-overrides.ini:/etc/php/8.2/fpm/conf.d/99-overrides.ini' - labels: - - "traefik.enable=false" - restart: always - webserver: - image: 'nginx:alpine' - working_dir: /application - restart: always - volumes: - - './app:/application' - - './phpdocker/nginx/nginx.conf:/etc/nginx/conf.d/default.conf' - ports: - - '1092:80' - networks: - - web - - ns-eatvio - labels: - - "traefik.docker.network=web" - - "traefik.enable=true" - - "traefik.frontend.rule=Host:dev2.eatvio.com,socket.eatvio.com" - - "traefik.port=80" - - "traefik.protocol=http" + php-fpm: + build: phpdocker/php-fpm + working_dir: /application + environment: + - TZ=Europe/Moscow + command: ["/usr/bin/supervisord"] + depends_on: + - mysql + networks: + ns-eatvio: + ipv4_address: 172.118.0.2 + volumes: + - "./app:/application" + - "./phpdocker/php-fpm/php-ini-overrides.ini:/etc/php/8.2/fpm/conf.d/99-overrides.ini" + - "./phpdocker/php-fpm/laravel-worker.conf:/etc/supervisor/conf.d/laravel-worker.conf" + labels: + - "traefik.enable=false" + restart: always - mailhog: - image: 'mailhog/mailhog' - ports: - - '8082:8025' - networks: - ns-eatvio: - ipv4_address: 172.118.0.4 + webserver: + image: "nginx:alpine" + working_dir: /application + restart: always + depends_on: + - php-fpm + - soketi + volumes: + - "./app:/application" + - "./phpdocker/nginx/nginx.conf:/etc/nginx/conf.d/default.conf" + ports: + - "1092:80" + networks: + - web + - ns-eatvio + labels: + - "traefik.docker.network=web" + - "traefik.enable=true" + - "traefik.frontend.rule=Host:dev2.eatvio.com,socket.eatvio.com" + - "traefik.port=80" + - "traefik.protocol=http" + + mailhog: + image: "mailhog/mailhog" + ports: + - "8082:8025" + networks: + ns-eatvio: + ipv4_address: 172.118.0.4 networks: - web: - external: true - ns-eatvio: - external: false - ipam: - config: - - subnet: 172.118.0.0/28 + web: + external: true + ns-eatvio: + external: false + ipam: + config: + - subnet: 172.118.0.0/28 diff --git a/phpdocker/php-fpm/Dockerfile b/phpdocker/php-fpm/Dockerfile index edaf199..dff8736 100644 --- a/phpdocker/php-fpm/Dockerfile +++ b/phpdocker/php-fpm/Dockerfile @@ -2,15 +2,16 @@ FROM phpdockerio/php:8.2-fpm WORKDIR "/application" RUN curl -sL https://deb.nodesource.com/setup_20.x | bash - -RUN apt-get update; \ - apt-get -y --no-install-recommends install \ - git \ - php8.2-gd \ - php8.2-mysql \ - php8.2-sqlite3 \ - nodejs \ - php8.2-pgsql && npm install -g npm@10.1.0 \ - apt-get clean; \ - rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/doc/* +RUN apt-get update && \ + apt-get -y --no-install-recommends install \ + git \ + php8.2-gd \ + php8.2-mysql \ + php8.2-sqlite3 \ + php8.2-pgsql \ + python3-pkg-resources supervisor \ + nodejs && npm install -g npm@10.1.0 \ + apt-get clean; \ + rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/doc/* ENV PATH=node_modules/.bin:$PATH diff --git a/phpdocker/php-fpm/laravel-worker.conf b/phpdocker/php-fpm/laravel-worker.conf new file mode 100644 index 0000000..7a15976 --- /dev/null +++ b/phpdocker/php-fpm/laravel-worker.conf @@ -0,0 +1,23 @@ +[supervisord] +nodaemon=true + +[program:laravel-worker] +process_name=%(program_name)s_%(process_num)02d +command=php /application/artisan queue:work --sleep=3 --tries=3 --max-time=3600 +autostart=true +autorestart=true +stopasgroup=true +killasgroup=true +user=www-data +numprocs=4 +redirect_stderr=true +stdout_logfile=/application/storage/logs/worker.log +stopwaitsecs=3600 + +[program:php-fpm] +command=php-fpm8.2 -F +process_name=%(program_name)s_%(process_num)02d +stdout_logfile=/dev/stdout +stdout_logfile_maxbytes=0 +stdderr_logfile=/dev/stderr +stderr_logfile_maxbytes=0