Sources:
Créer un fichier docker-compose.yml dans un nouveau dossier :
version: '3' services: db: # image officielle de MySQL 5 image: mysql:5 # mapper le port 3306 de l'image vers un port local ports: - "3307:3306" # utilisateur root sans mot de passe environment: MYSQL_ALLOW_EMPTY_PASSWORD: 'yes' MYSQL_USER: 'root' # mapper le dossier /var/lib/mysql de l'image vers un dossier local volumes: - /chemin/du/projet/mysql-data:/var/lib/mysql maildev: image: djfarrelly/maildev # mapper le port 80 de l'image vers un port local ports: - "8002:80" phpmyadmin: image: phpmyadmin/phpmyadmin # mapper le port 80 de l'image vers un port local ports: - "8080:80" # l'image 'db' doit être lancée avant celle-ci depends_on: - db # spécifier que PhpMyAdmin se connecte le serveur dans l'image 'db' environment: PMA_HOST: db php72: # on va construire une image dans le dossier php72 build: php72 # mapper le port 80 de l'image vers un port local ports: - "8000:80" volumes: - /chemin/du/projet/vhosts:/etc/apache2/sites-enabled - /chemin/du/projet/www:/var/www
Lire la doc de l'image PHP pour plus d'infos sur comment créer son image.
<VirtualHost *:80> ServerName localhost DocumentRoot /var/www <Directory /var/www> AllowOverride All Order Allow,Deny Allow from All </Directory> ErrorLog /var/log/apache2/error.log CustomLog /var/log/apache2/access.log combined </VirtualHost>
FROM php:7.2-apache RUN echo "ServerName localhost" >> /etc/apache2/apache2.conf RUN apt-get update && \ apt-get install -y --no-install-recommends locales apt-utils git wget; RUN echo "en_US.UTF-8 UTF-8" > /etc/locale.gen && \ echo "fr_FR.UTF-8 UTF-8" >> /etc/locale.gen && \ locale-gen COPY php.ini /usr/local/etc/php/php.ini RUN curl -sSk https://getcomposer.org/installer | php -- --disable-tls && \ mv composer.phar /usr/local/bin/composer # Créer user "marc:marc" avec même uid et gid que sur l'hôte RUN addgroup --system marc --gid 1000 && adduser --system marc --uid 1000 --ingroup marc WORKDIR /var/www/
Au final, on doit obtenir l'arborescence suivante :
/chemin/du/projet/ ├── docker-compose.yml ├── mysql-data │ └── ... divers fichiers de mysql ... ├── php72 │ ├── Dockerfile │ └── php.ini ├── vhosts │ └── vhost.conf └── www └── ... fichiers du projet php ...
docker-compose build
Cette commande peut également être relancée à chaque fois qu'on modifie quelque chose dans ./php72/Dockerfile
Lancer la stack :
docker-compose up
Les messages provenant des différentes images en cours de fonctionnement sont affichées dans le terminal. Pour tout fermer, taper Ctrl+C.
Pour lancer la stack en mode détaché, ajouter l'option -d
docker-compose up -d
et pour l'arrêter :
docker-compose down
Lancer la stack.
Se connecter au bash du conteneur PHP :
# En tant que l'utilisateur marc (1000). # Pour root, ce serait 0. docker exec -u 1000 -it $(docker ps -aqf "name=php72") bash # Sinon on peut d'abord regarder l'ID du container # et indiquer les trois premiers chiffres (XXX) : docker ps docker exec -u 1000 -it XXX bash
Configurer git sinon la création du projet plantera :
git config --global user.email "you@example.com" git config --global user.name "Your Name"
Voir la page Installer Symfony pour installer Symfony.
Se placer dans le dossier /var/www/
cd /var/www symfony new --full --dir=.
–dir=. pour créer le projet directement dans /var/www, pas besoin d'un sous-dossier.
La création du projet peut durer un certain temps
Installer la dépendance symfony/apache-pack
composer require symfony/apache-pack
Cette dépendance permet que la debug toolbar soit affichée.