Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 74cde7b

Browse files
author
DKravtsov
committed
Symfony 6.1, performance optimization for Mac.
1 parent 906ab32 commit 74cde7b

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

45 files changed

+2220
-2552
lines changed

‎Dockerfile‎

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
FROM php:8.1-apache
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
10+
ARG INSIDE_DOCKER_CONTAINER=1
11+
ENV INSIDE_DOCKER_CONTAINER=$INSIDE_DOCKER_CONTAINER
1212

1313
# check environment
1414
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; \
@@ -58,8 +58,8 @@ RUN rm -r $APP_HOME
5858
# create document root, fix permissions for www-data user and change owner to www-data
5959
RUN mkdir -p $APP_HOME/public && \
6060
mkdir -p /home/$USERNAME && chown $USERNAME:$USERNAME /home/$USERNAME \
61-
&& usermod -u $UID $USERNAME -d /home/$USERNAME \
62-
&& groupmod -g $GID $USERNAME \
61+
&& usermod -o -u $HOST_UID $USERNAME -d /home/$USERNAME \
62+
&& groupmod -o -g $HOST_GID $USERNAME \
6363
&& chown -R ${USERNAME}:${USERNAME} $APP_HOME
6464

6565
# put apache and php config for Symfony, enable sites

‎Makefile‎

Lines changed: 160 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -1,61 +1,113 @@
1-
dir=${CURDIR}
2-
31
ifndef APP_ENV
42
include .env
53
# Determine if .env.local file exist
6-
ifneq ("$(wildcard .env.local)","")
4+
ifneq ("$(wildcard .env.local)","")
75
include .env.local
86
endif
97
endif
108

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

2428
build:
25-
@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
2634

2735
build-test:
28-
@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
2941

3042
build-staging:
31-
@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
3248

3349
build-prod:
34-
@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
3555

3656
start:
37-
@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
3862

3963
start-test:
40-
@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
4169

4270
start-staging:
43-
@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
4476

4577
start-prod:
46-
@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
4783

4884
stop:
49-
@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
5090

5191
stop-test:
52-
@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
5397

5498
stop-staging:
55-
@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
56104

57105
stop-prod:
58-
@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
59111

60112
restart: stop start
61113
restart-test: stop-test start-test
@@ -69,31 +121,66 @@ env-staging:
69121
@make exec cmd="composer dump-env staging"
70122

71123
ssh:
72-
@docker-compose $(project) exec $(optionT) $(symfony_user) symfony 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) symfony 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) symfony bash
133+
else
134+
$(ERROR_ONLY_FOR_HOST)
135+
endif
73136

74137
ssh-supervisord:
75-
@docker-compose $(project) exec supervisord bash
138+
ifeq ($(INSIDE_DOCKER_CONTAINER), 0)
139+
@HOST_UID=$(HOST_UID) HOST_GID=$(HOST_GID) docker-compose $(PROJECT_NAME) exec supervisord bash
140+
else
141+
$(ERROR_ONLY_FOR_HOST)
142+
endif
76143

77144
ssh-mysql:
78-
@docker-compose $(project) exec mysql bash
145+
ifeq ($(INSIDE_DOCKER_CONTAINER), 0)
146+
@HOST_UID=$(HOST_UID) HOST_GID=$(HOST_GID) docker-compose $(PROJECT_NAME) exec mysql bash
147+
else
148+
$(ERROR_ONLY_FOR_HOST)
149+
endif
79150

80151
ssh-rabbitmq:
81-
@docker-compose $(project) exec rabbitmq /bin/sh
152+
ifeq ($(INSIDE_DOCKER_CONTAINER), 0)
153+
@HOST_UID=$(HOST_UID) HOST_GID=$(HOST_GID) docker-compose $(PROJECT_NAME) exec rabbitmq /bin/sh
154+
else
155+
$(ERROR_ONLY_FOR_HOST)
156+
endif
82157

83158
exec:
84-
@docker-compose $(project) exec $(optionT) $(symfony_user) symfony $$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) symfony $$cmd
163+
endif
85164

86165
exec-bash:
87-
@docker-compose $(project) exec $(optionT) $(symfony_user) symfony 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) symfony bash -c "$(cmd)"
170+
endif
88171

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

92179
report-prepare:
93-
mkdir -p $(dir)/reports/coverage
180+
@make exec cmd="mkdir -p reports/coverage"
94181

95182
report-clean:
96-
rm -rf $(dir)/reports/*
183+
@make exec-by-root cmd="rm -rf reports/*"
97184

98185
wait-for-db:
99186
@make exec cmd="php bin/console db:wait"
@@ -112,16 +199,32 @@ info:
112199
@make exec cmd="bin/console about"
113200

114201
logs:
202+
ifeq ($(INSIDE_DOCKER_CONTAINER), 0)
115203
@docker logs -f ${COMPOSE_PROJECT_NAME}_symfony
204+
else
205+
$(ERROR_ONLY_FOR_HOST)
206+
endif
116207

117208
logs-supervisord:
209+
ifeq ($(INSIDE_DOCKER_CONTAINER), 0)
118210
@docker logs -f ${COMPOSE_PROJECT_NAME}_supervisord
211+
else
212+
$(ERROR_ONLY_FOR_HOST)
213+
endif
119214

120215
logs-mysql:
216+
ifeq ($(INSIDE_DOCKER_CONTAINER), 0)
121217
@docker logs -f ${COMPOSE_PROJECT_NAME}_mysql
218+
else
219+
$(ERROR_ONLY_FOR_HOST)
220+
endif
122221

123222
logs-rabbitmq:
223+
ifeq ($(INSIDE_DOCKER_CONTAINER), 0)
124224
@docker logs -f ${COMPOSE_PROJECT_NAME}_rabbitmq
225+
else
226+
$(ERROR_ONLY_FOR_HOST)
227+
endif
125228

126229
drop-migrate:
127230
@make exec cmd="php bin/console doctrine:schema:drop --full-database --force"
@@ -142,31 +245,22 @@ messenger-setup-transports:
142245
@make exec cmd="php bin/console messenger:setup-transports"
143246

144247
phpunit:
145-
@make exec-bash cmd="rm -rf ./var/cache/test* && bin/console cache:warmup --env=test && ./vendor/bin/phpunit -c phpunit.xml.dist --coverage-html reports/coverage $(phpunitOptions) --coverage-clover reports/clover.xml --log-junit reports/junit.xml"
248+
@make exec-bash cmd="rm -rf ./var/cache/test* && bin/console cache:warmup --env=test && ./vendor/bin/phpunit -c phpunit.xml.dist --coverage-html reports/coverage $(PHPUNIT_OPTIONS) --coverage-clover reports/clover.xml --log-junit reports/junit.xml"
146249

147-
###> php-coveralls ###
148250
report-code-coverage: ## update code coverage on coveralls.io. Note: COVERALLS_REPO_TOKEN should be set on CI side.
149251
@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"
150-
###< php-coveralls ###
151252

152-
###> phpcs ###
153-
phpcs: ## Run PHP CodeSniffer
253+
phpcs: ## Runs PHP CodeSniffer
154254
@make exec-bash cmd="./vendor/bin/phpcs --version && ./vendor/bin/phpcs --standard=PSR12 --colors -p src tests"
155-
###< phpcs ###
156255

157-
###> ecs ###
158-
ecs: ## Run Easy Coding Standard
256+
ecs: ## Runs Easy Coding Standard
159257
@make exec-bash cmd="./vendor/bin/ecs --version && ./vendor/bin/ecs --clear-cache check src tests"
160258

161259
ecs-fix: ## Run The Easy Coding Standard to fix issues
162260
@make exec-bash cmd="./vendor/bin/ecs --version && ./vendor/bin/ecs --clear-cache --fix check src tests"
163-
###< ecs ###
164261

165-
###> phpmetrics ###
166-
phpmetrics:
167-
@make exec-by-root cmd="make phpmetrics-process"
168-
169-
phpmetrics-process: ## Generates PhpMetrics static analysis, should be run inside symfony container
262+
phpmetrics: ## Runs phpmetrics
263+
ifeq ($(INSIDE_DOCKER_CONTAINER), 1)
170264
@mkdir -p reports/phpmetrics
171265
@if [ ! -f reports/junit.xml ] ; then \
172266
printf "033円[32;49mjunit.xml not found, running tests...033円[39m\n" ; \
@@ -175,28 +269,30 @@ phpmetrics-process: ## Generates PhpMetrics static analysis, should be run insid
175269
@echo "033円[32mRunning PhpMetrics033円[39m"
176270
@php ./vendor/bin/phpmetrics --version
177271
@php ./vendor/bin/phpmetrics --junit=reports/junit.xml --report-html=reports/phpmetrics .
178-
###< phpmetrics ###
272+
else
273+
@make exec-by-root cmd="make phpmetrics"
274+
endif
179275

180-
###> php copy/paste detector ###
181-
phpcpd:
276+
phpcpd: ## Runs php copy/paste detector
182277
@make exec cmd="php phpcpd.phar --fuzzy src tests"
183-
###< php copy/paste detector ###
184278

185-
###> php mess detector ###
186-
phpmd:
279+
phpmd: ## Runs php mess detector
187280
@make exec cmd="php ./vendor/bin/phpmd src text phpmd_ruleset.xml --suffixes php"
188-
###< php mess detector ###
189281

190-
###> PHPStan static analysis tool ###
191-
phpstan:
282+
phpstan: ## Runs PHPStan static analysis tool
283+
ifeq ($(INSIDE_DOCKER_CONTAINER), 1)
192284
@echo "033円[32mRunning PHPStan - PHP Static Analysis Tool033円[39m"
193-
@make exec cmd="bin/console cache:clear --env=test"
194-
@make exec cmd="./vendor/bin/phpstan --version"
195-
@make exec cmd="./vendor/bin/phpstan analyze src tests"
196-
###< PHPStan static analysis tool ###
285+
@bin/console cache:clear --env=test
286+
@./vendor/bin/phpstan --version
287+
@./vendor/bin/phpstan analyze src tests
288+
else
289+
@make exec cmd="make phpstan"
290+
endif
197291

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

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /