forked from eatvio/eatvio-infra
Merge pull request 'eatvio-infra' (#2) from eatvio-infra into main
Reviewed-on: alex_chevski/eatvio-infra#2
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -1,3 +1,4 @@
|
||||
.env
|
||||
app/
|
||||
mysql_data/
|
||||
typesense-data/
|
||||
|
||||
24
Makefile
24
Makefile
@@ -17,9 +17,21 @@ status:
|
||||
bash:
|
||||
docker-compose exec php-fpm bash
|
||||
|
||||
worker-restart:
|
||||
docker-compose exec worker supervisorctl restart laravel-worker:*
|
||||
|
||||
clear-images:
|
||||
docker-compose exec php-fpm ./artisan clear:orphaned-images
|
||||
|
||||
links-images:
|
||||
jdupes -r -1 -l app/storage/app
|
||||
|
||||
tinker:
|
||||
docker-compose exec php-fpm ./artisan tinker
|
||||
|
||||
reseed-db:
|
||||
docker-compose exec php-fpm bash -c "./artisan migrate:refresh; ./artisan db:seed"
|
||||
|
||||
setup-laravel-key:
|
||||
docker-compose exec php-fpm php /application/artisan key:generate
|
||||
|
||||
@@ -69,7 +81,7 @@ node-frontend-deps:
|
||||
docker-compose exec php-fpm npm i --legacy-peer-deps
|
||||
|
||||
test:
|
||||
docker-compose exec php-fpm vendor/bin/phpunit
|
||||
docker-compose exec php-fpm vendor/bin/paratest
|
||||
|
||||
fix-insights:
|
||||
docker-compose exec php-fpm ./artisan insights --fix
|
||||
@@ -81,9 +93,15 @@ rector:
|
||||
docker-compose exec php-fpm vendor/bin/rector process --dry-run
|
||||
|
||||
static-analysis:
|
||||
docker-compose exec php-fpm composer static-analysis
|
||||
docker-compose exec php-fpm composer static-analysis
|
||||
|
||||
ci: test rector insights static-analysis
|
||||
detect-magic-numbers:
|
||||
docker-compose exec php-fpm vendor/bin/phpmnd app/ tests/
|
||||
|
||||
ci: fix-code-style detect-magic-numbers test rector insights static-analysis
|
||||
|
||||
local-ci:
|
||||
docker-compose exec -T php-fpm composer ci
|
||||
|
||||
init: clone copy-infra-env restart setup-laravel-packages copy-laravel-env setup-laravel-key run-migrations node-frontend-deps build-frontend-prod fix-permissions make-storage-link
|
||||
|
||||
|
||||
@@ -1,90 +1,143 @@
|
||||
---
|
||||
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
|
||||
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
|
||||
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
|
||||
depends_on:
|
||||
- mysql
|
||||
networks:
|
||||
- ns-eatvio
|
||||
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
|
||||
|
||||
mailhog:
|
||||
image: 'mailhog/mailhog'
|
||||
ports:
|
||||
- '8082:8025'
|
||||
networks:
|
||||
ns-eatvio:
|
||||
ipv4_address: 172.118.0.4
|
||||
frontend:
|
||||
build: phpdocker/front-end
|
||||
command: "npm run watch"
|
||||
working_dir: /application
|
||||
environment:
|
||||
- TZ=Europe/Moscow
|
||||
depends_on:
|
||||
- mysql
|
||||
- php-fpm
|
||||
networks:
|
||||
- ns-eatvio
|
||||
volumes:
|
||||
- "./app:/application"
|
||||
labels:
|
||||
- "traefik.enable=false"
|
||||
restart: always
|
||||
|
||||
worker:
|
||||
build: phpdocker/worker
|
||||
working_dir: /application
|
||||
environment:
|
||||
- TZ=Europe/Moscow
|
||||
command: "service supervisor start"
|
||||
depends_on:
|
||||
- mysql
|
||||
- php-fpm
|
||||
networks:
|
||||
- ns-eatvio
|
||||
volumes:
|
||||
- "./app:/application"
|
||||
- "./phpdocker/worker/php-ini-overrides.ini:/etc/php/8.2/fpm/conf.d/99-overrides.ini"
|
||||
- "./phpdocker/worker/laravel-worker.conf:/etc/supervisor/conf.d/laravel-worker.conf"
|
||||
labels:
|
||||
- "traefik.enable=false"
|
||||
restart: always
|
||||
|
||||
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"
|
||||
- "./phpdocker/nginx/alex.eatvio.local+4.pem:/etc/nginx/alex.eatvio.local+4.pem"
|
||||
- "./phpdocker/nginx/alex.eatvio.local+4-key.pem:/etc/nginx/alex.eatvio.local+4-key.pem"
|
||||
- "./phpdocker/nginx/socket.alex.eatvio.local+4.pem:/etc/nginx/socket.alex.eatvio.local+4.pem"
|
||||
- "./phpdocker/nginx/socket.alex.eatvio.local+4-key.pem:/etc/nginx/socket.alex.eatvio.local+4-key.pem"
|
||||
ports:
|
||||
- "1092:80"
|
||||
- "10443:5000"
|
||||
networks:
|
||||
- web
|
||||
- ns-eatvio
|
||||
|
||||
mailhog:
|
||||
image: "mailhog/mailhog"
|
||||
ports:
|
||||
- "8082:8025"
|
||||
networks:
|
||||
- ns-eatvio
|
||||
|
||||
typesense:
|
||||
image: typesense/typesense:26.0
|
||||
restart: on-failure
|
||||
expose:
|
||||
- 8108
|
||||
ports:
|
||||
- 8108:8108
|
||||
networks:
|
||||
- ns-eatvio
|
||||
- web
|
||||
volumes:
|
||||
- ./typesense-data:/data
|
||||
command: "--data-dir /data --api-key=typesense --enable-cors"
|
||||
|
||||
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
|
||||
|
||||
16
phpdocker/front-end/Dockerfile
Normal file
16
phpdocker/front-end/Dockerfile
Normal file
@@ -0,0 +1,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 \
|
||||
php8.2-pgsql \
|
||||
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
|
||||
23
phpdocker/front-end/laravel-worker.conf
Normal file
23
phpdocker/front-end/laravel-worker.conf
Normal 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=2
|
||||
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
|
||||
2
phpdocker/front-end/php-ini-overrides.ini
Normal file
2
phpdocker/front-end/php-ini-overrides.ini
Normal file
@@ -0,0 +1,2 @@
|
||||
upload_max_filesize = 100M
|
||||
post_max_size = 108M
|
||||
@@ -1,16 +1,30 @@
|
||||
FROM phpdockerio/php:8.2-fpm
|
||||
WORKDIR "/application"
|
||||
|
||||
# ENV SUPERCRONIC_URL=https://github.com/aptible/supercronic/releases/download/v0.2.29/supercronic-linux-amd64 \
|
||||
# SUPERCRONIC=supercronic-linux-amd64 \
|
||||
# SUPERCRONIC_SHA1SUM=cd48d45c4b10f3f0bfdd3a57d054cd05ac96812b
|
||||
|
||||
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-intl \
|
||||
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/*
|
||||
|
||||
|
||||
RUN apt-get update && \
|
||||
apt-get install -y \
|
||||
ffmpeg \
|
||||
jpegoptim && \
|
||||
apt-get clean; \
|
||||
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/doc/*
|
||||
|
||||
ENV PATH=node_modules/.bin:$PATH
|
||||
|
||||
23
phpdocker/php-fpm/laravel-worker.conf
Normal file
23
phpdocker/php-fpm/laravel-worker.conf
Normal 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=2
|
||||
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
|
||||
16
phpdocker/worker/Dockerfile
Normal file
16
phpdocker/worker/Dockerfile
Normal file
@@ -0,0 +1,16 @@
|
||||
FROM phpdockerio/php:8.2-fpm
|
||||
WORKDIR "/application"
|
||||
|
||||
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 && \
|
||||
apt-get clean && \
|
||||
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/doc/*
|
||||
|
||||
RUN apt-get update && \
|
||||
apt-get install -y \
|
||||
ffmpeg \
|
||||
jpegoptim && \
|
||||
apt-get clean; \
|
||||
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/doc/*
|
||||
15
phpdocker/worker/laravel-worker.conf
Normal file
15
phpdocker/worker/laravel-worker.conf
Normal file
@@ -0,0 +1,15 @@
|
||||
[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=2
|
||||
redirect_stderr=true
|
||||
stdout_logfile=/application/storage/logs/worker.log
|
||||
stopwaitsecs=3600
|
||||
2
phpdocker/worker/php-ini-overrides.ini
Normal file
2
phpdocker/worker/php-ini-overrides.ini
Normal file
@@ -0,0 +1,2 @@
|
||||
upload_max_filesize = 100M
|
||||
post_max_size = 108M
|
||||
Reference in New Issue
Block a user