Skip to content

Commit 95df725

Browse files
author
DKravtsov
committed
Updated Laravel to the latest version, Makefile improvements, performance optimization for Mac.
1 parent 1d4e3aa commit 95df725

35 files changed

+1686
-2252
lines changed

.dockerignore

-2
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,7 @@ bootstrap/cache
1010
.phpstorm.meta.php
1111
Dockerfile
1212
_ide_helper.php
13-
Dockerfile
1413
docker-compose.yml
1514
docker-compose-test-ci.yml
1615
docker-compose-staging.yml
1716
docker-compose-prod.yml
18-
Makefile

.editorconfig

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ trim_trailing_whitespace = true
1111
[*.md]
1212
trim_trailing_whitespace = false
1313

14-
[*.{yml,yaml}]
14+
[*.yml]
1515
indent_size = 2
1616

1717
[{composer.json,Makefile}]

.gitignore

+3
Original file line numberDiff line numberDiff line change
@@ -19,5 +19,8 @@ reports/*
1919
npm-debug.log
2020
yarn-error.log
2121
.phpunit.result.cache
22+
###> friendsofphp/php-cs-fixer ###
23+
.php-cs-fixer.cache
2224
.php_cs
2325
.php_cs.cache
26+
###< friendsofphp/php-cs-fixer ###

Dockerfile

+6-7
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,14 @@
11
FROM php:8.1-fpm
22

33
# set main params
4-
ARG BUILD_ARGUMENT_DEBUG_ENABLED=false
5-
ENV DEBUG_ENABLED=$BUILD_ARGUMENT_DEBUG_ENABLED
64
ARG BUILD_ARGUMENT_ENV=dev
75
ENV ENV=$BUILD_ARGUMENT_ENV
86
ENV APP_HOME /var/www/html
9-
ARG UID=1000
10-
ARG GID=1000
7+
ARG HOST_UID=1000
8+
ARG HOST_GID=1000
119
ENV USERNAME=www-data
12-
10+
ARG INSIDE_DOCKER_CONTAINER=1
11+
ENV INSIDE_DOCKER_CONTAINER=$INSIDE_DOCKER_CONTAINER
1312

1413
# check environment
1514
RUN if [ "$BUILD_ARGUMENT_ENV" = "default" ]; then echo "Set BUILD_ARGUMENT_ENV in docker build-args like --build-arg BUILD_ARGUMENT_ENV=dev" && exit 2; \
@@ -51,8 +50,8 @@ RUN apt-get update && apt-get upgrade -y && apt-get install -y \
5150
# create document root, fix permissions for www-data user and change owner to www-data
5251
RUN mkdir -p $APP_HOME/public && \
5352
mkdir -p /home/$USERNAME && chown $USERNAME:$USERNAME /home/$USERNAME \
54-
&& usermod -u $UID $USERNAME -d /home/$USERNAME \
55-
&& groupmod -g $GID $USERNAME \
53+
&& usermod -o -u $HOST_UID $USERNAME -d /home/$USERNAME \
54+
&& groupmod -o -g $HOST_GID $USERNAME \
5655
&& chown -R ${USERNAME}:${USERNAME} $APP_HOME
5756

5857
# put php config for Laravel

Makefile

+158-61
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
dir=${CURDIR}
21
export COMPOSE_PROJECT_NAME=environment3
32

43
ifndef APP_ENV
@@ -8,53 +7,107 @@ ifndef APP_ENV
87
endif
98
endif
109

11-
laravel_user=-u www-data
12-
project=-p ${COMPOSE_PROJECT_NAME}
13-
service=${COMPOSE_PROJECT_NAME}:latest
14-
interactive:=$(shell [ -t 0 ] && echo 1)
15-
ifneq ($(interactive),1)
16-
optionT=-T
10+
ifndef INSIDE_DOCKER_CONTAINER
11+
INSIDE_DOCKER_CONTAINER = 0
1712
endif
18-
ifeq ($(GITLAB_CI),1)
13+
14+
HOST_UID := $(shell id -u)
15+
HOST_GID := $(shell id -g)
16+
PHP_USER := -u www-data
17+
PROJECT_NAME := -p ${COMPOSE_PROJECT_NAME}
18+
INTERACTIVE := $(shell [ -t 0 ] && echo 1)
19+
ERROR_ONLY_FOR_HOST = @printf "\033[33mThis command for host machine\033[39m\n"
20+
ifneq ($(INTERACTIVE), 1)
21+
OPTION_T := -T
22+
endif
23+
ifeq ($(GITLAB_CI), 1)
1924
# Determine additional params for phpunit in order to generate coverage badge on GitLabCI side
20-
phpunitOptions=--coverage-text --colors=never
25+
PHPUNIT_OPTIONS := --coverage-text --colors=never
2126
endif
2227

2328
build:
24-
@docker-compose -f docker-compose.yml build
29+
ifeq ($(INSIDE_DOCKER_CONTAINER), 0)
30+
@HOST_UID=$(HOST_UID) HOST_GID=$(HOST_GID) docker-compose -f docker-compose.yml build
31+
else
32+
$(ERROR_ONLY_FOR_HOST)
33+
endif
2534

2635
build-test:
27-
@docker-compose -f docker-compose-test-ci.yml build
36+
ifeq ($(INSIDE_DOCKER_CONTAINER), 0)
37+
@HOST_UID=$(HOST_UID) HOST_GID=$(HOST_GID) docker-compose -f docker-compose-test-ci.yml build
38+
else
39+
$(ERROR_ONLY_FOR_HOST)
40+
endif
2841

2942
build-staging:
30-
@docker-compose -f docker-compose-staging.yml build
43+
ifeq ($(INSIDE_DOCKER_CONTAINER), 0)
44+
@HOST_UID=$(HOST_UID) HOST_GID=$(HOST_GID) docker-compose -f docker-compose-staging.yml build
45+
else
46+
$(ERROR_ONLY_FOR_HOST)
47+
endif
3148

3249
build-prod:
33-
@docker-compose -f docker-compose-prod.yml build
50+
ifeq ($(INSIDE_DOCKER_CONTAINER), 0)
51+
@HOST_UID=$(HOST_UID) HOST_GID=$(HOST_GID) docker-compose -f docker-compose-prod.yml build
52+
else
53+
$(ERROR_ONLY_FOR_HOST)
54+
endif
3455

3556
start:
36-
@docker-compose -f docker-compose.yml $(project) up -d
57+
ifeq ($(INSIDE_DOCKER_CONTAINER), 0)
58+
@HOST_UID=$(HOST_UID) HOST_GID=$(HOST_GID) docker-compose -f docker-compose.yml $(PROJECT_NAME) up -d
59+
else
60+
$(ERROR_ONLY_FOR_HOST)
61+
endif
3762

3863
start-test:
39-
@docker-compose -f docker-compose-test-ci.yml $(project) up -d
64+
ifeq ($(INSIDE_DOCKER_CONTAINER), 0)
65+
@HOST_UID=$(HOST_UID) HOST_GID=$(HOST_GID) docker-compose -f docker-compose-test-ci.yml $(PROJECT_NAME) up -d
66+
else
67+
$(ERROR_ONLY_FOR_HOST)
68+
endif
4069

4170
start-staging:
42-
@docker-compose -f docker-compose-staging.yml $(project) up -d
71+
ifeq ($(INSIDE_DOCKER_CONTAINER), 0)
72+
@HOST_UID=$(HOST_UID) HOST_GID=$(HOST_GID) docker-compose -f docker-compose-staging.yml $(PROJECT_NAME) up -d
73+
else
74+
$(ERROR_ONLY_FOR_HOST)
75+
endif
4376

4477
start-prod:
45-
@docker-compose -f docker-compose-prod.yml $(project) up -d
78+
ifeq ($(INSIDE_DOCKER_CONTAINER), 0)
79+
@HOST_UID=$(HOST_UID) HOST_GID=$(HOST_GID) docker-compose -f docker-compose-prod.yml $(PROJECT_NAME) up -d
80+
else
81+
$(ERROR_ONLY_FOR_HOST)
82+
endif
4683

4784
stop:
48-
@docker-compose -f docker-compose.yml $(project) down
85+
ifeq ($(INSIDE_DOCKER_CONTAINER), 0)
86+
@HOST_UID=$(HOST_UID) HOST_GID=$(HOST_GID) docker-compose -f docker-compose.yml $(PROJECT_NAME) down
87+
else
88+
$(ERROR_ONLY_FOR_HOST)
89+
endif
4990

5091
stop-test:
51-
@docker-compose -f docker-compose-test-ci.yml $(project) down
92+
ifeq ($(INSIDE_DOCKER_CONTAINER), 0)
93+
@HOST_UID=$(HOST_UID) HOST_GID=$(HOST_GID) docker-compose -f docker-compose-test-ci.yml $(PROJECT_NAME) down
94+
else
95+
$(ERROR_ONLY_FOR_HOST)
96+
endif
5297

5398
stop-staging:
54-
@docker-compose -f docker-compose-staging.yml $(project) down
99+
ifeq ($(INSIDE_DOCKER_CONTAINER), 0)
100+
@HOST_UID=$(HOST_UID) HOST_GID=$(HOST_GID) docker-compose -f docker-compose-staging.yml $(PROJECT_NAME) down
101+
else
102+
$(ERROR_ONLY_FOR_HOST)
103+
endif
55104

56105
stop-prod:
57-
@docker-compose -f docker-compose-prod.yml $(project) down
106+
ifeq ($(INSIDE_DOCKER_CONTAINER), 0)
107+
@HOST_UID=$(HOST_UID) HOST_GID=$(HOST_GID) docker-compose -f docker-compose-prod.yml $(PROJECT_NAME) down
108+
else
109+
$(ERROR_ONLY_FOR_HOST)
110+
endif
58111

59112
restart: stop start
60113
restart-test: stop-test start-test
@@ -68,31 +121,66 @@ env-test-ci:
68121
@make exec cmd="cp ./.env.test-ci ./.env"
69122

70123
ssh:
71-
@docker-compose $(project) exec $(optionT) $(laravel_user) laravel bash
124+
ifeq ($(INSIDE_DOCKER_CONTAINER), 0)
125+
@HOST_UID=$(HOST_UID) HOST_GID=$(HOST_GID) docker-compose $(PROJECT_NAME) exec $(OPTION_T) $(PHP_USER) laravel bash
126+
else
127+
$(ERROR_ONLY_FOR_HOST)
128+
endif
129+
130+
ssh-root:
131+
ifeq ($(INSIDE_DOCKER_CONTAINER), 0)
132+
@HOST_UID=$(HOST_UID) HOST_GID=$(HOST_GID) docker-compose $(PROJECT_NAME) exec $(OPTION_T) laravel bash
133+
else
134+
$(ERROR_ONLY_FOR_HOST)
135+
endif
72136

73137
ssh-nginx:
74-
@docker-compose $(project) exec nginx /bin/sh
138+
ifeq ($(INSIDE_DOCKER_CONTAINER), 0)
139+
@HOST_UID=$(HOST_UID) HOST_GID=$(HOST_GID) docker-compose $(PROJECT_NAME) exec nginx /bin/sh
140+
else
141+
$(ERROR_ONLY_FOR_HOST)
142+
endif
75143

76144
ssh-supervisord:
77-
@docker-compose $(project) exec supervisord bash
145+
ifeq ($(INSIDE_DOCKER_CONTAINER), 0)
146+
@HOST_UID=$(HOST_UID) HOST_GID=$(HOST_GID) docker-compose $(PROJECT_NAME) exec supervisord bash
147+
else
148+
$(ERROR_ONLY_FOR_HOST)
149+
endif
78150

79151
ssh-mysql:
80-
@docker-compose $(project) exec mysql bash
152+
ifeq ($(INSIDE_DOCKER_CONTAINER), 0)
153+
@HOST_UID=$(HOST_UID) HOST_GID=$(HOST_GID) docker-compose $(PROJECT_NAME) exec mysql bash
154+
else
155+
$(ERROR_ONLY_FOR_HOST)
156+
endif
81157

82158
exec:
83-
@docker-compose $(project) exec $(optionT) $(laravel_user) laravel $$cmd
159+
ifeq ($(INSIDE_DOCKER_CONTAINER), 1)
160+
@$$cmd
161+
else
162+
@HOST_UID=$(HOST_UID) HOST_GID=$(HOST_GID) docker-compose $(PROJECT_NAME) exec $(OPTION_T) $(PHP_USER) laravel $$cmd
163+
endif
84164

85165
exec-bash:
86-
@docker-compose $(project) exec $(optionT) $(laravel_user) laravel bash -c "$(cmd)"
166+
ifeq ($(INSIDE_DOCKER_CONTAINER), 1)
167+
@bash -c "$(cmd)"
168+
else
169+
@HOST_UID=$(HOST_UID) HOST_GID=$(HOST_GID) docker-compose $(PROJECT_NAME) exec $(OPTION_T) $(PHP_USER) laravel bash -c "$(cmd)"
170+
endif
87171

88172
exec-by-root:
89-
@docker-compose $(project) exec $(optionT) laravel $$cmd
173+
ifeq ($(INSIDE_DOCKER_CONTAINER), 0)
174+
@HOST_UID=$(HOST_UID) HOST_GID=$(HOST_GID) docker-compose $(PROJECT_NAME) exec $(OPTION_T) laravel $$cmd
175+
else
176+
$(ERROR_ONLY_FOR_HOST)
177+
endif
90178

91179
report-prepare:
92-
mkdir -p $(dir)/reports/coverage
180+
@make exec cmd="mkdir -p reports/coverage"
93181

94182
report-clean:
95-
rm -rf $(dir)/reports/*
183+
@make exec-by-root cmd="rm -rf reports/*"
96184

97185
wait-for-db:
98186
@make exec cmd="php artisan db:wait"
@@ -115,16 +203,32 @@ info:
115203
@make exec cmd="php --version"
116204

117205
logs:
206+
ifeq ($(INSIDE_DOCKER_CONTAINER), 0)
118207
@docker logs -f ${COMPOSE_PROJECT_NAME}_laravel
208+
else
209+
$(ERROR_ONLY_FOR_HOST)
210+
endif
119211

120212
logs-nginx:
213+
ifeq ($(INSIDE_DOCKER_CONTAINER), 0)
121214
@docker logs -f ${COMPOSE_PROJECT_NAME}_nginx
215+
else
216+
$(ERROR_ONLY_FOR_HOST)
217+
endif
122218

123219
logs-supervisord:
220+
ifeq ($(INSIDE_DOCKER_CONTAINER), 0)
124221
@docker logs -f ${COMPOSE_PROJECT_NAME}_supervisord
222+
else
223+
$(ERROR_ONLY_FOR_HOST)
224+
endif
125225

126226
logs-mysql:
227+
ifeq ($(INSIDE_DOCKER_CONTAINER), 0)
127228
@docker logs -f ${COMPOSE_PROJECT_NAME}_mysql
229+
else
230+
$(ERROR_ONLY_FOR_HOST)
231+
endif
128232

129233
drop-migrate:
130234
@make exec cmd="php artisan migrate:fresh"
@@ -141,31 +245,22 @@ seed:
141245
@make exec cmd="php artisan db:seed --force"
142246

143247
phpunit:
144-
@make exec cmd="./vendor/bin/phpunit -c phpunit.xml --coverage-html reports/coverage $(phpunitOptions) --coverage-clover reports/clover.xml --log-junit reports/junit.xml"
248+
@make exec cmd="./vendor/bin/phpunit -c phpunit.xml --coverage-html reports/coverage $(PHPUNIT_OPTIONS) --coverage-clover reports/clover.xml --log-junit reports/junit.xml"
145249

146-
###> php-coveralls ###
147250
report-code-coverage: ## update code coverage on coveralls.io. Note: COVERALLS_REPO_TOKEN should be set on CI side.
148251
@make exec-bash cmd="export COVERALLS_REPO_TOKEN=${COVERALLS_REPO_TOKEN} && php ./vendor/bin/php-coveralls -v --coverage_clover reports/clover.xml --json_path reports/coverals.json"
149-
###< php-coveralls ###
150252

151-
###> phpcs ###
152-
phpcs: ## Run PHP CodeSniffer
253+
phpcs: ## Runs PHP CodeSniffer
153254
@make exec-bash cmd="./vendor/bin/phpcs --version && ./vendor/bin/phpcs --standard=PSR12 --colors -p app tests"
154-
###< phpcs ###
155255

156-
###> ecs ###
157-
ecs: ## Run Easy Coding Standard
256+
ecs: ## Runs Easy Coding Standard
158257
@make exec-bash cmd="./vendor/bin/ecs --version && ./vendor/bin/ecs --clear-cache check app tests"
159258

160259
ecs-fix: ## Run The Easy Coding Standard to fix issues
161260
@make exec-bash cmd="./vendor/bin/ecs --version && ./vendor/bin/ecs --clear-cache --fix check app tests"
162-
###< ecs ###
163-
164-
###> phpmetrics ###
165-
phpmetrics:
166-
@make exec-by-root cmd="make phpmetrics-process"
167261

168-
phpmetrics-process: ## Generates PhpMetrics static analysis, should be run inside symfony container
262+
phpmetrics: ## Runs phpmetrics
263+
ifeq ($(INSIDE_DOCKER_CONTAINER), 1)
169264
@mkdir -p reports/phpmetrics
170265
@if [ ! -f reports/junit.xml ] ; then \
171266
printf "\033[32;49mjunit.xml not found, running tests...\033[39m\n" ; \
@@ -174,28 +269,30 @@ phpmetrics-process: ## Generates PhpMetrics static analysis, should be run insid
174269
@echo "\033[32mRunning PhpMetrics\033[39m"
175270
@php ./vendor/bin/phpmetrics --version
176271
@php ./vendor/bin/phpmetrics --junit=reports/junit.xml --report-html=reports/phpmetrics .
177-
###< phpmetrics ###
272+
else
273+
@make exec-by-root cmd="make phpmetrics"
274+
endif
178275

179-
###> php copy/paste detector ###
180-
phpcpd:
276+
phpcpd: ## Runs php copy/paste detector
181277
@make exec cmd="php phpcpd.phar --fuzzy app tests"
182-
###< php copy/paste detector ###
183278

184-
###> php mess detector ###
185-
phpmd:
279+
phpmd: ## Runs php mess detector
186280
@make exec cmd="php ./vendor/bin/phpmd app text phpmd_ruleset.xml --suffixes php"
187-
###< php mess detector ###
188281

189-
###> PHPStan static analysis tool ###
190-
phpstan:
282+
phpstan: ## Runs PHPStan static analysis tool
283+
ifeq ($(INSIDE_DOCKER_CONTAINER), 1)
191284
@echo "\033[32mRunning PHPStan - PHP Static Analysis Tool\033[39m"
192-
@make exec cmd="php artisan cache:clear --env=test"
193-
@make exec cmd="./vendor/bin/phpstan --version"
194-
@make exec cmd="./vendor/bin/phpstan analyze app tests"
195-
###< PHPStan static analysis tool ###
285+
@php artisan cache:clear --env=test
286+
@./vendor/bin/phpstan --version
287+
@./vendor/bin/phpstan analyze app tests
288+
else
289+
@make exec cmd="make phpstan"
290+
endif
196291

197-
###> Phpinsights PHP quality checks ###
198-
phpinsights:
292+
phpinsights: ## Runs Php Insights PHP quality checks
293+
ifeq ($(INSIDE_DOCKER_CONTAINER), 1)
199294
@echo "\033[32mRunning PHP Insights\033[39m"
200-
@make exec cmd="php -d error_reporting=0 ./vendor/bin/phpinsights analyse --no-interaction --min-quality=100 --min-complexity=80 --min-architecture=100 --min-style=100"
201-
###< Phpinsights PHP quality checks ###
295+
@php -d error_reporting=0 ./vendor/bin/phpinsights analyse --no-interaction --min-quality=100 --min-complexity=80 --min-architecture=100 --min-style=100
296+
else
297+
@make exec cmd="make phpinsights"
298+
endif

app/Exceptions/Handler.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ class Handler extends ExceptionHandler
2424
protected $dontReport = [];
2525

2626
/**
27-
* A list of the inputs that are never flashed for validation exceptions.
27+
* A list of the inputs that are never flashed to the session on validation exceptions.
2828
*
2929
* @var array<int, string>
3030
*/

0 commit comments

Comments
 (0)