Skip to content

Commit 85a3d5d

Browse files
committed
docker: upgrade to php8.2, add symfony cli, fix #5
1 parent b35892f commit 85a3d5d

File tree

8 files changed

+85
-54
lines changed

8 files changed

+85
-54
lines changed

.docker/mysql/Dockerfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
FROM mysql:8
2+
MAINTAINER J.GAUTHI <github.com/jgauthi>
23

34
ARG MYSQL_USER
45
ARG MYSQL_PASSWORD

.docker/nginx/sites/demo.conf

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ server {
22
listen 80 default_server;
33
listen [::]:80 default_server;
44
server_name demo.localhost.tv;
5-
root /var/www/demo/public;
5+
root /var/www/project/demo/public;
66

77
location / {
88
try_files $uri @rewriteapp;
@@ -22,8 +22,8 @@ server {
2222
}
2323

2424
# You can write your logs in symfony log folder
25-
# error_log /var/www/demo/var/log/nginx-error.log;
26-
# access_log /var/www/demo/var/log/nginx-access.log;
25+
# error_log /var/www/project/demo/var/log/nginx-error.log;
26+
# access_log /var/www/project/demo/var/log/nginx-access.log;
2727
error_log /var/log/nginx/demo_error.log;
2828
access_log /var/log/nginx/demo_access.log;
2929
}

.docker/php/Dockerfile

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
1-
FROM php:8.1-fpm
1+
FROM php:8.2-fpm
2+
MAINTAINER J.GAUTHI <github.com/jgauthi>
23

34
# Some libs
45
RUN apt-get update && apt-get install -y --no-install-recommends vim curl locales apt-utils unzip
56

67
# https://github.com/mlocati/docker-php-extension-installer
78
COPY --from=mlocati/php-extension-installer /usr/bin/install-php-extensions /usr/local/bin/
8-
RUN install-php-extensions @composer \
9+
RUN install-php-extensions \
910
apcu opcache intl \
1011
gd \
1112
pdo_mysql \
@@ -14,6 +15,13 @@ RUN install-php-extensions @composer \
1415
xdebug \
1516
zip
1617

18+
# Install composer
19+
COPY --from=composer:latest /usr/bin/composer /usr/local/bin/composer
20+
21+
# Install symfony cli
22+
RUN curl -sS https://get.symfony.com/cli/installer | bash && mv /root/.symfony5/bin/symfony /usr/local/bin/
23+
RUN chown -R www-data:www-data /var/www
24+
1725
# PHP Conf
1826
COPY php.ini /usr/local/etc/php/php.ini
1927
COPY php-fpm-pool.conf /usr/local/etc/php/php-fpm.conf
@@ -23,7 +31,7 @@ RUN rm -rf /var/lib/apt/lists/* \
2331
&& apt-get purge --auto-remove -y g++ \
2432
&& apt-get clean
2533

26-
WORKDIR /var/www/
34+
WORKDIR /var/www/project/demo
2735
USER www-data
2836

2937
EXPOSE 9000

.env.dist

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,19 +21,26 @@ APP_SECRET=1c033cf04c8c84f016ffa88768ee165a
2121
###< symfony/framework-bundle ###
2222

2323
###> doctrine/doctrine-bundle ###
24-
# Format described at http://docs.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/configuration.html#connecting-using-a-url
25-
# For an SQLite database, use: "sqlite:///%kernel.project_dir%/var/data.db"
26-
# Configure your db driver and server_version in config/packages/doctrine.yaml
27-
# DATABASE_URL=mysql://local:local@db:3306/demo
24+
# Format described at https://www.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/configuration.html#connecting-using-a-url
25+
# IMPORTANT: You MUST configure your server version, either here or in config/packages/doctrine.yaml
26+
#
27+
DB_HOST=db
28+
DB_PORT=3306
29+
DB_NAME=demo
30+
DB_USER=local
31+
DB_PASS=local
32+
DATABASE_URL=mysql://${DB_USER}:${DB_PASS}@${DB_HOST}:${DB_PORT}/${DB_NAME}?serverVersion=8
33+
TIMEZONE=Europe/Paris
2834
###< doctrine/doctrine-bundle ###
2935

3036
###> Docker config ###
3137
COMPOSE_PROJECT_NAME=sfdemo
3238
# VOLUME_USER_ID=1001 # You can set your Linux UserID (command: id -u)
3339
# COMPOSER_HOME=/home/$user/.cache/composer/ # You can set your composer folder, change $user by your username
40+
41+
# A transférer dans doctrine
3442
MYSQL_DATABASE=demo
3543
MYSQL_USER=local
3644
MYSQL_PASSWORD=local
3745
MYSQL_PORT=3306
38-
TIMEZONE=Europe/Paris
3946
###< Docker database conf ###

Makefile

Lines changed: 22 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,12 @@ endif
88
user := $(shell id -u)
99
group := $(shell id www-data -g)
1010
PROJECT_NAME=demo
11-
PROJECT_DIR=/var/www/$(PROJECT_NAME)
11+
PROJECT_DIR=/var/www/project/$(PROJECT_NAME)
1212
DOCKER_COMPOSE := USER_ID=$(user) GROUP_ID=$(group) docker-compose
1313
EXEC?=$(DOCKER_COMPOSE) exec --workdir $(PROJECT_DIR) php
14+
EXEC_SF?=$(DOCKER_COMPOSE) exec -u www-data php
1415
EXEC_ROOT?=$(DOCKER_COMPOSE) exec --workdir $(PROJECT_DIR) -u root php
15-
CONSOLE=bin/console
16+
CONSOLE=$(EXEC_SF) symfony console
1617
PHPCSFIXER?=$(EXEC) php -d memory_limit=1024m vendor/bin/php-cs-fixer
1718
DOCKER_COMPOSE_OVERRIDE ?= dev
1819

@@ -25,7 +26,7 @@ help:
2526
##---------------------------------------------------------------------------
2627

2728
sf: ## Symfony Command, example: `sf CMD="debug:router"`
28-
@$(EXEC) $(CONSOLE) $(CMD)
29+
@$(CONSOLE) $(CMD)
2930

3031
up: docker-compose.override.yml up-ci ## Start project with docker-compose + Dev env
3132

@@ -44,16 +45,16 @@ install-demo:
4445
@$(EXEC_ROOT) chmod -R 775 /var/www
4546
@$(EXEC_ROOT) chown -R www-data:www-data /var/www
4647
@rm -rf project/* project/.env
47-
$(call composer,create-project symfony/symfony-demo install_project,/var/www)
48+
$(call composer,create-project symfony/symfony-demo install_project,/var/www/project)
4849
@cp .docker/php/symfony-demo.env project/.env
49-
@$(EXEC_ROOT) bash -c "cd /var/www && mv install_project/* $(PROJECT_NAME)/ && rm -rf install_project/ data/"
50+
@$(EXEC_ROOT) bash -c "cd /var/www/project && mv install_project/* $(PROJECT_NAME)/ && rm -rf install_project/ data/"
5051
@make restart perm db-create-migration db-install clear-cache
5152

5253
install-prod:
5354
APP_ENV=prod APP_DEBUG=0 $(call composer,install --no-dev --optimize-autoloader)
5455
APP_ENV=prod make clear-cache
55-
APP_ENV=prod APP_DEBUG=0 @$(EXEC) $(CONSOLE) cache:clear
56-
@$(EXEC) $(CONSOLE) cache:pool:clear cache.global_clearer
56+
APP_ENV=prod APP_DEBUG=0 @$(CONSOLE) cache:clear
57+
@$(CONSOLE) cache:pool:clear cache.global_clearer
5758

5859
status: ## Docker container status
5960
@$(DOCKER_COMPOSE) ps
@@ -64,8 +65,8 @@ uninstall: clear stop ## Remove docker containers
6465
reset: uninstall install ## Remove and re-create docker containers
6566

6667
clear-cache: perm ## Clear + Prepare Cache (alias: c:c), you can specify the env: ENV=prod
67-
@$(EXEC) $(CONSOLE) cache:clear --no-warmup --env=$(APP_ENV)
68-
@$(EXEC) $(CONSOLE) cache:warmup --env=$(APP_ENV)
68+
@$(CONSOLE) cache:clear --no-warmup --env=$(APP_ENV)
69+
@$(CONSOLE) cache:warmup --env=$(APP_ENV)
6970

7071
c\:c: clear-cache
7172

@@ -96,32 +97,32 @@ shell: ## Run app container in interactive mode
9697
@$(EXEC) /bin/bash
9798

9899
server-dump: ## [Dev only] Display dump() values with tail (ctrl+C to stop)
99-
@$(EXEC) $(CONSOLE) server:dump
100+
@$(CONSOLE) server:dump
100101

101102

102103
##
103104
## Doctrine Command (Database)
104105
##---------------------------------------------------------------------------
105106
db-diff: ## Generate a migration by comparing your current database to your mapping information
106-
@$(EXEC) $(CONSOLE) doctrine:migration:diff
107+
@$(CONSOLE) doctrine:migration:diff
107108

108109
db-create-migration: ## Create migration
109-
@$(EXEC) $(CONSOLE) make:migration
110+
@$(CONSOLE) make:migration
110111

111112
db-migrate: ## Migrate database schema to the latest available version
112-
@$(EXEC) $(CONSOLE) doctrine:migration:migrate -n --env=$(APP_ENV)
113+
@$(CONSOLE) doctrine:migration:migrate -n --env=$(APP_ENV)
113114

114115
db-rollback: ## Rollback the latest executed migration
115-
@$(EXEC) $(CONSOLE) doctrine:migration:migrate prev -n --env=$(APP_ENV)
116+
@$(CONSOLE) doctrine:migration:migrate prev -n --env=$(APP_ENV)
116117

117118
db-validate: ## Check the ORM mapping
118-
@$(EXEC) $(CONSOLE) doctrine:schema:validate
119+
@$(CONSOLE) doctrine:schema:validate
119120

120121
db-create-database: ## Create database if not exists
121-
@$(EXEC) $(CONSOLE) doctrine:database:create --if-not-exists
122+
@$(CONSOLE) doctrine:database:create --if-not-exists
122123

123124
db-fixtures: ## Apply doctrine fixtures
124-
@$(EXEC) $(CONSOLE) doctrine:fixtures:load -n --env=$(APP_ENV)
125+
@$(CONSOLE) doctrine:fixtures:load -n --env=$(APP_ENV)
125126

126127
db-install: db-create-database db-migrate db-fixtures ## Drop and install database with schema + fixtures
127128

@@ -158,13 +159,13 @@ lint: lint-symfony php-cs ## Run lint on Twig, YAML, PHP and Javascript files
158159
lint-symfony: lint-yaml lint-twig lint-xliff ## Lint Symfony (Twig and YAML) files
159160

160161
lint-yaml: ## Lint YAML files
161-
@$(EXEC) $(CONSOLE) lint:yaml config
162+
@$(CONSOLE) lint:yaml config
162163

163164
lint-twig: ## Lint Twig files
164-
@$(EXEC) $(CONSOLE) lint:twig templates
165+
@$(CONSOLE) lint:twig templates
165166

166167
lint-xliff: ## Lint Translation files
167-
@$(EXEC) $(CONSOLE) lint:xliff translations
168+
@$(CONSOLE) lint:xliff translations
168169

169170
php-cs: vendor ## Lint PHP code
170171
@$(PHPCSFIXER) fix --diff --dry-run --no-interaction -v
@@ -176,7 +177,7 @@ security-check: vendor ## Check for vulnerable dependencies
176177
@$(EXEC) vendor/bin/security-checker security:check
177178

178179
test-schema: vendor ## Test the doctrine Schema
179-
@$(EXEC) $(CONSOLE) doctrine:schema:validate --skip-sync -vvv --no-interaction
180+
@$(CONSOLE) doctrine:schema:validate --skip-sync -vvv --no-interaction
180181

181182
test-all: lint test-schema security-check tests ## Lint all, check vulnerable dependencies, run PHP tests
182183

docker-compose.dev.yml

Lines changed: 25 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@ services:
44
build:
55
context: .docker/mysql
66
args:
7-
MYSQL_USER: ${MYSQL_USER}
8-
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
9-
MYSQL_PORT: ${MYSQL_PORT}
7+
MYSQL_USER: ${DB_USER}
8+
MYSQL_PASSWORD: ${DB_PASS}
9+
MYSQL_PORT: ${DB_PORT}
1010
ports:
1111
- 33060:3306 # Reserve port to localhost for database connexion on phpstorm
1212
volumes:
@@ -20,10 +20,10 @@ services:
2020
traefik.http.routers.pma.rule: "Host(`pma.localhost.tv`)"
2121
traefik.http.routers.pma.entrypoints: web
2222
environment:
23-
PMA_HOST: db
24-
PMA_PORT: 3306
25-
PMA_USER: ${MYSQL_USER}
26-
PMA_PASSWORD: ${MYSQL_PASSWORD}
23+
PMA_HOST: ${DB_HOST}
24+
PMA_PORT: ${DB_PORT}
25+
PMA_USER: ${DB_USER}
26+
PMA_PASSWORD: ${DB_PASS}
2727
ports:
2828
- 80
2929
volumes:
@@ -39,19 +39,33 @@ services:
3939
- pma.localhost.tv
4040

4141
maildev:
42-
image: djfarrelly/maildev
42+
image: maildev/maildev
4343
labels:
4444
traefik.enable: true
45-
traefik.http.services.maildev.loadbalancer.server.port: 80
45+
traefik.http.services.maildev.loadbalancer.server.port: 1080
4646
traefik.http.routers.maildev.rule: "Host(`maildev.localhost.tv`)"
4747
ports:
48-
- 80
49-
- 25
48+
- 1080
49+
- 1025
5050
networks:
5151
sfdemo:
5252
aliases:
5353
- maildev.localhost.tv
5454

55+
# maildev:
56+
# image: djfarrelly/maildev
57+
# labels:
58+
# traefik.enable: true
59+
# traefik.http.services.maildev.loadbalancer.server.port: 80
60+
# traefik.http.routers.maildev.rule: "Host(`maildev.localhost.tv`)"
61+
# ports:
62+
# - 80
63+
# - 25
64+
# networks:
65+
# sfdemo:
66+
# aliases:
67+
# - maildev.localhost.tv
68+
5569
traefik:
5670
image: traefik:v2.3
5771
command:

docker-compose.yml

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ services:
1212
- 80
1313
- 443
1414
volumes:
15-
- ./project:/var/www/demo
15+
- ./project:/var/www/project/demo
1616
- ./.docker/nginx/nginx.conf:/etc/nginx/nginx.conf
1717
- ./.docker/nginx/sites:/etc/nginx/sites-enabled
1818
restart: unless-stopped
@@ -28,10 +28,10 @@ services:
2828
command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
2929
restart: unless-stopped
3030
environment:
31-
MYSQL_ROOT_PASSWORD: ${MYSQL_PASSWORD}
32-
MYSQL_DATABASE: ${MYSQL_DATABASE}
33-
MYSQL_USER: ${MYSQL_USER}
34-
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
31+
MYSQL_ROOT_PASSWORD: ${DB_PASS}
32+
MYSQL_DATABASE: ${DB_NAME}
33+
MYSQL_USER: ${DB_USER}
34+
MYSQL_PASSWORD: ${DB_PASS}
3535
TZ: ${TIMEZONE:-Europe/Paris}
3636
ports:
3737
- 3306
@@ -42,13 +42,13 @@ services:
4242
build: .docker/php
4343
restart: unless-stopped
4444
environment:
45-
MYSQL_HOST: db
46-
MYSQL_USER: ${MYSQL_USER}
47-
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
48-
MYSQL_PORT: ${MYSQL_PORT}
49-
MYSQL_DATABASE: ${MYSQL_DATABASE}
45+
MYSQL_HOST: ${DB_HOST}
46+
MYSQL_USER: ${DB_USER}
47+
MYSQL_PASSWORD: ${DB_PASS}
48+
MYSQL_PORT: ${DB_PORT}
49+
MYSQL_DATABASE: ${DB_NAME}
5050
volumes:
51-
- ./project:/var/www/demo
51+
- ./project:/var/www/project/demo
5252
- ~/.cache/composer:/.composer # Share composer cache
5353
depends_on:
5454
- db

project/.gitkeep

100644100755
File mode changed.

0 commit comments

Comments
 (0)