From e7cb197e68dc2da589ff6a0b90b2131593595e1a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BD=D0=B0=D1=82=D0=BE=D0=BB=D0=B8=D0=B9=20=D0=9F?= =?UTF-8?q?=D0=BE=D0=BB=D0=BE=D0=B7?= Date: Fri, 26 Sep 2025 08:11:08 +0000 Subject: [PATCH 1/4] Update Makefile --- Makefile | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Makefile b/Makefile index 083706b..b5a799c 100644 --- a/Makefile +++ b/Makefile @@ -14,6 +14,14 @@ restart: stop start status: docker compose ps +rm-promo-image-assets: + rm -rf app/database/assets/images + +clone-promo-image: + git clone http://gitea.office.local:3000/alex_chevski/eatvio_images_assets app/database/assets/images + +reinit-promo-images: rm-promo-image-assets clone-promo-image + bash: docker compose exec php-fpm bash From e681536a23c4c78d706dd8103059ff3b5003ed02 Mon Sep 17 00:00:00 2001 From: Anatoliy Poloz Date: Mon, 20 Oct 2025 14:06:57 +0300 Subject: [PATCH 2/4] update(infra): php 8.3 to 8.4, typesense 26 -> 29 --- .env.infra-example | 2 ++ Makefile | 47 +++++++++++++++++++++++----------- docker-compose.yml | 18 +++++++++---- phpdocker/front-end/Dockerfile | 14 +++++----- phpdocker/php-fpm/Dockerfile | 20 +++++++-------- phpdocker/worker/Dockerfile | 10 ++++---- 6 files changed, 69 insertions(+), 42 deletions(-) diff --git a/.env.infra-example b/.env.infra-example index 5d5c347..bc641a7 100644 --- a/.env.infra-example +++ b/.env.infra-example @@ -14,4 +14,6 @@ MYSQL_PASSWORD="eatvio_pass_nhbnhb22" PROD_DB_USER=some_user PROD_DB_PASS=strong_pass PROD_DB_FILE="latest-prod-db.sql" +PROD_DB_HOST="10.nn.n.n" +PROD_DB_PORT="10nn" MY_APP_GIT_URL="ssh://git@10.55.5.123:222/eatvio/eatvio.git" diff --git a/Makefile b/Makefile index 083706b..2870203 100644 --- a/Makefile +++ b/Makefile @@ -1,13 +1,21 @@ -include .env.infra-example +include .env clone: git clone ${MY_APP_GIT_URL} app +rm-promo-image-assets: + docker compose exec php-fpm rm -rf application/database/assets/images + +clone-promo-image: + git clone http://gitea.office.local:3000/alex_chevski/eatvio_images_assets app/database/assets/images + +reinit-promo-images: rm-promo-image-assets clone-promo-image + start: docker compose up -d stop: - docker compose down --remove-orphans -v + docker compose down restart: stop start @@ -60,10 +68,10 @@ fix-permissions: docker compose exec php-fpm chown -R www-data:www-data storage fix-code-style: - docker compose exec -T php-fpm vendor/bin/pint + docker compose exec -T php-fpm bash -c "vendor/bin/pint --parallel; composer run fix-blade-fomatting" fix-blade-formatting: - docker compose exec -T php-fpm ./node_modules/.bin/prettier --write resources/**/**/**/**/*.blade.php + docker compose exec -T php-fpm composer run test-blade-formatting artisan: docker compose exec php-fpm ./artisan $(ARGS) @@ -71,25 +79,28 @@ artisan: mysql-console: docker compose exec mysql mysql -u${MYSQL_USER} -p${MYSQL_PASSWORD} ${MYSQL_DATABASE} +mysql-dump-local: + docker compose exec mysql mysqldump --single-transaction --skip-opt -u${MYSQL_USER} -p${MYSQL_PASSWORD} ${MYSQL_DATABASE} + mysql-restore: - docker compose exec mysql mysql -u${MYSQL_USER} -p${MYSQL_PASSWORD} ${MYSQL_DATABASE} \< /application/eatvio-11-03-2025.sql + docker compose exec mysql bash -c "mysql -u${MYSQL_USER} -p${MYSQL_PASSWORD} ${MYSQL_DATABASE} < /application/eatvio-restore.sql" mysql-save-prod-db: - mysqldump --single-transaction -u${PROD_DB_USER} -p${PROD_DB_PASS} -h10.55.5.7 -P1094 eatvio > ${PROD_DB_FILE} - + mysqldump --single-transaction -u${PROD_DB_USER} -p${PROD_DB_PASS} -h${PROD_DB_HOST} -P${PROD_DB_PORT} eatvio > ${PROD_DB_FILE} + mysql-restore-saved-from-prod-db: - docker compose exec mysql bash -c "cat ./${PROD_DB_FILE} | mysql -u${MYSQL_USER} -p${MYSQL_PASSWORD} ${MYSQL_DATABASE}" + docker compose exec mysql bash -c "cat ./${PROD_DB_FILE} | mysql -u${MYSQL_USER} -p${MYSQL_PASSWORD} ${MYSQL_DATABASE}" mysql-remove-latest-prod-db: - rm -f ${PROD_DB_FILE} - + rm -f ${PROD_DB_FILE} + mysql-import-db-from-prod: mysql-save-prod-db mysql-restore-saved-from-prod-db mysql-remove-latest-prod-db start-frontend: - docker compose exec php-fpm npm run watch + docker compose exec frontend npm run watch build-frontend-prod: - docker compose exec php-fpm npm run production + docker compose exec php-fpm bash -c "npm install -g npm@latest; npm run production" make-storage-link: docker compose exec php-fpm ./artisan storage:link @@ -125,15 +136,21 @@ clear-app-cache: docker compose exec php-fpm ./artisan optimize:clear build-front: - docker compose exec php-fpm npm run production + docker compose exec php-fpm bash -c "npm install -g npm@latest;npm run production" + +reindex-search: + docker compose exec php-fpm ./artisan search:init composer-do: docker compose exec php-fpm composer dump-auto run-once-oprations: - docker compose exec php-fpm bash -c "./artisan operations:process --test && ./artisan operations:process" + docker compose exec php-fpm bash -c "./artisan operations:process" -after-deploy-light: composer-do run-once-oprations clear-app-cache build-front fix-permissions reload-wokers +reload-wokers: + docker-compose exec worker ./artisan queue:restart + +after-deploy-light: composer-do run-migrations run-once-oprations clear-app-cache build-front fix-permissions reload-wokers after-deploy: composer-do clear-app-cache run-migrations run-once-oprations build-front fix-permissions reload-wokers reindex-search diff --git a/docker-compose.yml b/docker-compose.yml index 135b8f1..11bcd8a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -60,23 +60,25 @@ services: - "./app:/application" - "./phpdocker/php-fpm/php-ini-overrides.ini:/etc/php/8.3/fpm/conf.d/99-overrides.ini" - "./tbank_certs:/tbank_certs" + # - "./eatvio-3467b-firebase-adminsdk-fbsvc-6e149b2a5a.json:/eatvio-3467b-firebase-adminsdk-fbsvc-6e149b2a5a.json" labels: - "traefik.enable=false" restart: always frontend: build: phpdocker/front-end - command: "npm run watch" + command: "npm run dev" working_dir: /application environment: - TZ=Europe/Moscow + - CHOKIDAR_USEPOLLING=true networks: - ns-eatvio volumes: - "./app:/application" labels: - "traefik.enable=false" - restart: always + restart: unless-stopped worker: build: phpdocker/worker @@ -93,6 +95,7 @@ services: - "./phpdocker/worker/php-ini-overrides.ini:/etc/php/8.3/fpm/conf.d/99-overrides.ini" - "./phpdocker/worker/laravel-worker.conf:/etc/supervisor/conf.d/laravel-worker.conf" - "./tbank_certs:/tbank_certs" + # - "./eatvio-3467b-firebase-adminsdk-fbsvc-6e149b2a5a.json:/eatvio-3467b-firebase-adminsdk-fbsvc-6e149b2a5a.json" labels: - "traefik.enable=false" restart: always @@ -107,8 +110,6 @@ services: volumes: - "./app:/application" - "./phpdocker/nginx/nginx.conf:/etc/nginx/conf.d/default.conf" - - "./phpdocker/nginx/shalom.eatvio.local+2.pem:/etc/nginx/shalom.eatvio.local+2.pem" - - "./phpdocker/nginx/shalom.eatvio.local+2-key.pem:/etc/nginx/shalom.eatvio.local+2-key.pem" ports: - "10443:5000" - "1092:80" @@ -130,8 +131,15 @@ services: - ns-eatvio typesense: - image: typesense/typesense:26.0 + image: typesense/typesense:29.0 restart: always + healthcheck: + test: + - CMD + - wget + - "--no-verbose" + - "--spider" + - "http://localhost:8108/health" networks: - ns-eatvio volumes: diff --git a/phpdocker/front-end/Dockerfile b/phpdocker/front-end/Dockerfile index 181e976..9d0ea28 100644 --- a/phpdocker/front-end/Dockerfile +++ b/phpdocker/front-end/Dockerfile @@ -1,15 +1,15 @@ -FROM phpdockerio/php:8.3-fpm +FROM phpdockerio/php:8.4-fpm WORKDIR "/application" -RUN curl -sL https://deb.nodesource.com/setup_22.x | bash - +RUN curl -sL https://deb.nodesource.com/setup_24.x | bash - RUN apt-get update && \ apt-get -y --no-install-recommends install \ git \ - php8.3-gd \ - php8.3-mysql \ - php8.3-sqlite3 \ - php8.3-pgsql \ - nodejs && npm install -g npm@10.1.0 \ + php8.4-gd \ + php8.4-mysql \ + php8.4-sqlite3 \ + php8.4-pgsql \ + nodejs && npm install -g npm@latest \ apt-get clean; \ rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/doc/* diff --git a/phpdocker/php-fpm/Dockerfile b/phpdocker/php-fpm/Dockerfile index d9b8df1..399513f 100644 --- a/phpdocker/php-fpm/Dockerfile +++ b/phpdocker/php-fpm/Dockerfile @@ -1,18 +1,18 @@ -FROM phpdockerio/php:8.3-fpm +FROM phpdockerio/php:8.4-fpm WORKDIR "/application" -RUN curl -sL https://deb.nodesource.com/setup_22.x | bash - +RUN curl -sL https://deb.nodesource.com/setup_24.x | bash - RUN apt-get update && \ apt-get -y --no-install-recommends install \ git \ - imagemagick php8.3-imagick \ - php8.3-gd \ - php8.3-mysql \ - php8.3-sqlite3 \ - php8.3-intl \ - php8.3-memcached \ - php8.3-pgsql \ - php8.3-xdebug \ + imagemagick php8.4-imagick \ + php8.4-gd \ + php8.4-mysql \ + php8.4-sqlite3 \ + php8.4-intl \ + php8.4-memcached \ + php8.4-pgsql \ + php8.4-xdebug \ python3-pkg-resources supervisor ffmpeg jpegoptim \ nodejs && npm install -g npm@10.1.0 \ apt-get clean; \ diff --git a/phpdocker/worker/Dockerfile b/phpdocker/worker/Dockerfile index df4f50b..6a57d1e 100644 --- a/phpdocker/worker/Dockerfile +++ b/phpdocker/worker/Dockerfile @@ -1,12 +1,12 @@ -FROM phpdockerio/php:8.3-fpm +FROM phpdockerio/php:8.4-fpm WORKDIR "/application" RUN apt-get update && \ apt-get -y --no-install-recommends install git \ - php8.3-gd php8.3-mysql php8.3-sqlite3 php8.3-pgsql ffmpeg jpegoptim \ - php8.3-intl \ - php8.3-memcached \ - imagemagick php8.3-imagick \ + php8.4-gd php8.4-mysql php8.4-sqlite3 php8.4-pgsql ffmpeg jpegoptim \ + php8.4-intl \ + php8.4-memcached \ + imagemagick php8.4-imagick \ python3-pkg-resources supervisor && \ apt-get clean && \ rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/doc/* From e9f42b83da71bf41f6f35b3e662a4d68516aa4cb Mon Sep 17 00:00:00 2001 From: Anatoliy Poloz Date: Wed, 22 Oct 2025 10:45:52 +0300 Subject: [PATCH 3/4] refactor(web): nginx config updated, _vite ws forward added --- phpdocker/nginx/nginx.conf | 124 ++++++++++++------------------------- 1 file changed, 40 insertions(+), 84 deletions(-) diff --git a/phpdocker/nginx/nginx.conf b/phpdocker/nginx/nginx.conf index e5d20b7..eba6cbb 100644 --- a/phpdocker/nginx/nginx.conf +++ b/phpdocker/nginx/nginx.conf @@ -2,29 +2,62 @@ upstream phpupstream { server php-fpm:9000 fail_timeout=5s max_fails=5; } +resolver 127.0.0.11 ipv6=off; + +map $http_upgrade $connection_upgrade { + default upgrade; + '' close; +} + server { listen 80; - server_name shalom.eatvio.local; + server_name my-dev.eatvio.test; # change me client_max_body_size 108M; + rewrite_log on; # access_log /var/log/nginx/application.access.log; access_log /dev/stdout; + error_log /dev/stdout info; root /application/public; index index.php; + # Vite HMR WebSocket and assets + location /_vite { + proxy_pass http://frontend:5173; + proxy_http_version 1.1; + + # WebSocket support + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection $connection_upgrade; + + # Headers + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_set_header X-Forwarded-Host $host; + + # Timeouts + proxy_connect_timeout 7d; + proxy_send_timeout 7d; + proxy_read_timeout 7d; + } + + # Production build assets + location /build { + try_files $uri $uri/ =404; + expires 1y; + add_header Cache-Control "public, immutable"; + } + # try to serve file directly, fallback to index.php location / { try_files $uri /index.php$is_args$args; } - if (!-e $request_filename) { - rewrite ^.*$ /index.php last; - } - - location ~ \.php$ { #resolver 127.0.0.11; #set $upstream php-fpm:9000; @@ -39,87 +72,10 @@ server { include fastcgi_params; } } -server { - listen 5000 ssl; - server_name localhost; - - ssl_certificate /etc/nginx/shalom.eatvio.local+2.pem; - ssl_certificate_key /etc/nginx/shalom.eatvio.local+2-key.pem; - ssl_protocols TLSv1.2; - rewrite_log on; - error_log /dev/stdout debug; - - charset UTF-8; - - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header X-Forwarded-Host $server_name; - - add_header X-Frame-Options "SAMEORIGIN" always; - add_header X-Content-Type-Options "nosniff" always; - add_header Referrer-Policy "strict-origin-when-cross-origin" always; - # add_header Content-Security-Policy "default-src 'self';"; - - - server_tokens off; - client_max_body_size 100M; - root /application/public; - index index.php; - - # location ^~ /visualization/ { - # rewrite /visualization/(.*) /$1 break; - # proxy_pass http://imageproxy:8080; - # } - - # try to serve file directly, fallback to index.php - location / { - try_files $uri /index.php$is_args$args; - } - - # if (!-e $request_filename) { - # rewrite ^.*$ /index.php last; - # } - - location ~ \.php$ { - fastcgi_pass phpupstream; - fastcgi_index index.php; - fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; - fastcgi_param PHP_VALUE "error_log=/var/log/nginx/application_php_errors.log"; - fastcgi_buffers 16 16k; - fastcgi_buffer_size 32k; - include fastcgi_params; - } - } -server { - listen 5000 ssl; - server_name socket.shalom.eatvio.local; - - ssl_certificate /etc/nginx/shalom.eatvio.local+2.pem; - ssl_certificate_key /etc/nginx/shalom.eatvio.local+2-key.pem; - ssl_protocols TLSv1.2; - - location / { - proxy_pass http://soketi:6001; - proxy_read_timeout 60; - proxy_connect_timeout 60; - proxy_redirect off; - - # Allow the use of websockets - proxy_http_version 1.1; - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection 'upgrade'; - proxy_set_header Host $host; - proxy_cache_bypass $http_upgrade; - } - - error_log /dev/stdout info; - access_log /dev/stdout; -} server { listen 80; - server_name socket.shalom.eatvio.local; + server_name ws-my-dev.eatvio.test; # change me location / { proxy_pass http://soketi:6001; From dfed48a607a69edcee59bd1ad4a4a60ce30862e8 Mon Sep 17 00:00:00 2001 From: Anatoliy Poloz Date: Wed, 22 Oct 2025 10:49:09 +0300 Subject: [PATCH 4/4] update php version --- docker-compose.yml | 4 ++-- phpdocker/php-fpm/Dockerfile | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 11bcd8a..4fedb08 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -58,7 +58,7 @@ services: - ns-eatvio volumes: - "./app:/application" - - "./phpdocker/php-fpm/php-ini-overrides.ini:/etc/php/8.3/fpm/conf.d/99-overrides.ini" + - "./phpdocker/php-fpm/php-ini-overrides.ini:/etc/php/8.4/fpm/conf.d/99-overrides.ini" - "./tbank_certs:/tbank_certs" # - "./eatvio-3467b-firebase-adminsdk-fbsvc-6e149b2a5a.json:/eatvio-3467b-firebase-adminsdk-fbsvc-6e149b2a5a.json" labels: @@ -92,7 +92,7 @@ services: - ns-eatvio volumes: - "./app:/application" - - "./phpdocker/worker/php-ini-overrides.ini:/etc/php/8.3/fpm/conf.d/99-overrides.ini" + - "./phpdocker/worker/php-ini-overrides.ini:/etc/php/8.4/fpm/conf.d/99-overrides.ini" - "./phpdocker/worker/laravel-worker.conf:/etc/supervisor/conf.d/laravel-worker.conf" - "./tbank_certs:/tbank_certs" # - "./eatvio-3467b-firebase-adminsdk-fbsvc-6e149b2a5a.json:/eatvio-3467b-firebase-adminsdk-fbsvc-6e149b2a5a.json" diff --git a/phpdocker/php-fpm/Dockerfile b/phpdocker/php-fpm/Dockerfile index 399513f..8ac338a 100644 --- a/phpdocker/php-fpm/Dockerfile +++ b/phpdocker/php-fpm/Dockerfile @@ -14,7 +14,7 @@ RUN apt-get update && \ php8.4-pgsql \ php8.4-xdebug \ python3-pkg-resources supervisor ffmpeg jpegoptim \ - nodejs && npm install -g npm@10.1.0 \ + nodejs && npm install -g npm@latest \ apt-get clean; \ rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/doc/*