Symfony + php-fpm + nginx + Docker
Pour ceux qui développent en Symfony, voici un petit article pour démarrer rapidement avec Docker, php-fpm et nginx, le tout en moins de 5 minutes, pause café incluse.
Pour ceux qui développent en Symfony, voici un petit article pour démarrer rapidement avec Docker, php-fpm et nginx.
Avant de commencer
- Installer php 7.1 avec les extensions ext-xml, ext-curl, ext-mbstring, ext-zip (Bien installer la version 7.1 minimum pour obtenir le framework Symfony 4)
- Installer composer
- Installer docker et docker-compose
Créons une application Symfony simple
Si vous avez déjà votre application, vous pouvez passer cette étape. Eventuellement, vérifiez juste le nommage des répertoires de base au cas où il faudrait ajuster dans les scripts ci-dessous pour votre cas particulier.
$ composer create-project symfony/website-skeleton simple-app
$ cd simple-app
$ php bin/console server:run
En naviguant sur http://localhost:8000
Vous devriez voir ça
Démarrons un server web
créer docker-compose-1.yml
web
image: nginx:latest
ports:
- "8000:80"
$ docker-compose -f docker-compose-1.yml up
En naviguant sur http://localhost:8000/
Vous devriez voir ça
Ajoutons la configuration du vhost pour Nginx
public/index.html
My website
créer site-2.conf
server {
index index.html;
server_name php-docker.local;
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
root /app/public;
}
créer docker-compose-2.yml
web:
image: nginx:latest
ports:
- "8000:80"
volumes:
- ./:/app
- ./site-2.conf:/etc/nginx/conf.d/default.conf
$ docker-compose -f docker-compose-2.yml up
En naviguant sur http://localhost:8000
Vous devriez voir ça
Ajoutons PHP-FPM
créer docker-compose-3.yml
web:
image: nginx:latest
ports:
- "8000:80"
volumes:
- ./:/app
- ./site-3.conf:/etc/nginx/conf.d/default.conf
links:
- php
php:
image: php:7-fpm
volumes:
- .:/app
et on met à jour le fichier de configuration du vhost
créer site-3.conf
server {
index index.php index.html;
server_name php-docker.local;
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
root /app/public;
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass php:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}
$ docker-compose -f docker-compose-".yml up
En naviguant sur http://localhost:8000
Vous devriez voir ça
Autre méthode
Ceci n'est évidemment pas L'unique méthode pour avoir une application Symfony qui tourne.
On peut noter:
Resources
- Git repository for this article: https://github.com/dengarcia/symfony-phpfpm-nginx-docker
- Photo from Erwan Hesry