diff --git a/.env.infra-example b/.env.infra-example index 55c0279..5d5c347 100644 --- a/.env.infra-example +++ b/.env.infra-example @@ -11,4 +11,7 @@ MYSQL_ROOT_PASSWORD="nhbnhb22" MYSQL_DATABASE="eatvio" MYSQL_USER="eatvio_user" MYSQL_PASSWORD="eatvio_pass_nhbnhb22" +PROD_DB_USER=some_user +PROD_DB_PASS=strong_pass +PROD_DB_FILE="latest-prod-db.sql" MY_APP_GIT_URL="ssh://git@10.55.5.123:222/eatvio/eatvio.git" diff --git a/Makefile b/Makefile index cac97d5..be370d7 100644 --- a/Makefile +++ b/Makefile @@ -60,10 +60,10 @@ fix-permissions: docker compose exec php-fpm chown -R www-data:www-data storage fix-code-style: - docker compose exec php-fpm vendor/bin/pint + docker compose exec -T php-fpm vendor/bin/pint -test-code-style: - docker compose exec php-fpm vendor/bin/pint --test +fix-blade-formatting: + docker compose exec -T php-fpm ./node_modules/.bin/prettier --write resources/**/**/**/**/*.blade.php artisan: docker compose exec php-fpm ./artisan $(ARGS) @@ -71,6 +71,20 @@ artisan: mysql-console: docker compose exec mysql mysql -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 + +mysql-save-prod-db: + mysqldump --single-transaction -u${PROD_DB_USER} -p${PROD_DB_PASS} -h10.55.5.7 -P1094 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}" + +mysql-remove-latest-prod-db: + 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 @@ -90,27 +104,44 @@ test-artisan: docker compose exec -u www-data php-fpm ./artisan test --stop-on-failure --env=testing paratest-artisan: - docker compose exec -u www-data php-fpm ./artisan test --parallel --stop-on-failure --env=testing + docker compose exec -u www-data -T php-fpm ./artisan test --parallel --stop-on-failure --env=testing fix-insights: docker compose exec php-fpm vendor/bin/phpinsights --fix --config-path=./config/insights.php --no-interaction --min-quality=80 --min-complexity=90 --min-architecture=75 --min-style=95 insights: - docker compose exec php-fpm vendor/bin/phpinsights --config-path=./config/insights.php --no-interaction --min-quality=80 --min-complexity=90 --min-architecture=75 --min-style=95 --flush-cache + docker compose exec -T php-fpm vendor/bin/phpinsights --config-path=./config/insights.php --no-interaction --min-quality=80 --min-complexity=90 --min-architecture=75 --min-style=95 --flush-cache rector: - docker compose exec php-fpm vendor/bin/rector process --dry-run + docker compose exec -T php-fpm vendor/bin/rector process --dry-run static-analysis: - docker compose exec php-fpm composer static-analysis + docker compose exec -T php-fpm composer static-analysis detect-magic-numbers: - docker compose exec -u www-data php-fpm vendor/bin/phpmnd app/ tests/ + docker compose exec -u www-data -T php-fpm vendor/bin/phpmnd app/ tests/ fix-web-permissions: docker compose exec -T php-fpm chown -R www-data:www-data bootstrap/cache storage -ci: fix-web-permissions fix-code-style detect-magic-numbers test rector insights static-analysis fix-web-permissions +clear-app-cache: + docker compose exec php-fpm ./artisan optimize:clear + +build-front: + docker compose exec php-fpm npm run production + +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" + +after-deploy-light: composer-do 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 + +# ci: fix-web-permissions fix-code-style detect-magic-numbers test rector insights static-analysis fix-web-permissions +ci: fix-web-permissions detect-magic-numbers test rector insights static-analysis fix-web-permissions pull: cd app && git pull ssh://git@10.55.5.123:222/eatvio/eatvio.git && cd ../ @@ -118,15 +149,22 @@ pull: update: pull restart fix-permissions setup-laravel-packages run-migrations local-composer-ci: - docker compose exec -T php-fpm composer ci - -after-deploy-light: composer-do clear-app-cache build-front fix-permissions reload-wokers - -after-deploy: composer-do clear-app-cache run-migrations build-front fix-permissions reload-wokers reindex-search + docker compose exec php-fpm composer ci test: fix-web-permissions test-artisan +test-file-by-path: + docker compose exec php-fpm ./artisan test --env=testing $(ARGS) + local-ci: fix-web-permissions local-composer-ci fix-web-permissions 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 +rebuild-services: + docker compose build --no-cache + +pull-services: + docker compose pull + +force-rebuild-services: stop rebuild-services pull-services start + diff --git a/docker-compose.yml b/docker-compose.yml index cd002da..135b8f1 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,4 +1,3 @@ ---- services: soketi: image: "quay.io/soketi/soketi:latest-16-alpine" @@ -108,8 +107,8 @@ services: volumes: - "./app:/application" - "./phpdocker/nginx/nginx.conf:/etc/nginx/conf.d/default.conf" - - "./phpdocker/nginx/hasan.eatvio.local+4.pem:/etc/nginx/hasan.eatvio.local+4.pem" - - "./phpdocker/nginx/hasan.eatvio.local+4-key.pem:/etc/nginx/hasan.eatvio.local+4-key.pem" + - "./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" @@ -132,7 +131,7 @@ services: typesense: image: typesense/typesense:26.0 - restart: on-failure + restart: always networks: - ns-eatvio volumes: diff --git a/phpdocker/php-fpm/Dockerfile b/phpdocker/php-fpm/Dockerfile index 5696c6f..d9b8df1 100644 --- a/phpdocker/php-fpm/Dockerfile +++ b/phpdocker/php-fpm/Dockerfile @@ -12,6 +12,7 @@ RUN apt-get update && \ php8.3-intl \ php8.3-memcached \ php8.3-pgsql \ + php8.3-xdebug \ python3-pkg-resources supervisor ffmpeg jpegoptim \ nodejs && npm install -g npm@10.1.0 \ apt-get clean; \