Merge pull request 'supervisord added for laravel queue' (#13) from apoloz/eatvio-infra:main into main

Reviewed-on: eatvio/eatvio-infra#13
This commit is contained in:
apoloz
2024-02-29 09:38:24 +00:00
3 changed files with 127 additions and 93 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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