Outils pour utilisateurs

Outils du site


docker:symfony

Ceci est une ancienne révision du document !


Composer une Stack pour un projet Symfony

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

  • Créer un dossier ./www
  • Créer un dossier ./php72
  • Créer un fichier ./php72/php.ini
    • Le contenu peut être copié depuis cette page
    • Click sur bouton Raw puis copier/coller toute la page
  • Créer un dossier ./vhosts
  • Créer un fichier ./vhosts/vhost.conf
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;
 
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

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éer un projet Symfony 5

:!: À TESTER :!:

La stack doit être lancée.

Se connecter au bash du conteneur PHP :

docker exec -u 1000 -it $(docker ps -aqf "name=php72") bash;

Créer le projet avec Composer :

composer create-project symfony/website-skeleton mon_projet
composer require symfony/apache-pack
docker/symfony.1606715911.txt.gz · Dernière modification: 2020/11/30 05:58 (modification externe)