Outils pour utilisateurs

Outils du site


docker:symfony

Composer une Stack pour un projet Symfony 5

Création de la stack

Créer un fichier docker-compose.yml dans un nouveau dossier :

/chemin/du/projet/docker-compose.yml
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

Configuration de Apache et PHP

Lire la doc de l'image PHP pour plus d'infos sur comment créer son image.

vhost.conf
<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>
  • Créer un fichier ./php72/Dockerfile
Dockerfile
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 ...

Construction de la stack

docker-compose build

Cette commande peut également être relancée à chaque fois qu'on modifie quelque chose dans ./php72/Dockerfile

Lancer/Arrêter la stack

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

Création du projet

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.

docker/symfony.txt · Dernière modification: 2020/12/01 06:33 (modification externe)