Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
docker:symfony [2020/11/30 05:58] marclebrun [Créer un projet Symfony] |
— (Version actuelle) | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== Composer une Stack pour un projet Symfony ====== | ||
- | |||
- | Sources: | ||
- | * [[https://blog.dev-web.io/2019/02/10/utiliser-symfony-dans-docker/|Utiliser Symfony dans docker]] | ||
- | |||
- | ===== Création de la stack ===== | ||
- | |||
- | Créer un fichier **docker-compose.yml** dans un nouveau dossier : | ||
- | |||
- | <code yaml /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 | ||
- | </code> | ||
- | |||
- | ===== 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 [[https://github.com/php/php-src/blob/master/php.ini-production|cette page]] | ||
- | * Click sur bouton **Raw** puis copier/coller toute la page | ||
- | * Créer un dossier **./vhosts** | ||
- | * Créer un fichier **./vhosts/vhost.conf** | ||
- | |||
- | <code apache 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> | ||
- | </code> | ||
- | |||
- | * Créer un fichier **./php72/Dockerfile** | ||
- | |||
- | <code text 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/ | ||
- | </code> | ||
- | |||
- | Au final, on doit obtenir l'arborescence suivante : | ||
- | |||
- | <code> | ||
- | /chemin/du/projet/ | ||
- | ├── docker-compose.yml | ||
- | ├── mysql-data | ||
- | │ └── ... divers fichiers de mysql ... | ||
- | ├── php72 | ||
- | │ ├── Dockerfile | ||
- | │ └── php.ini | ||
- | ├── vhosts | ||
- | │ └── vhost.conf | ||
- | └── www | ||
- | └── ... fichiers du projet php ... | ||
- | </code> | ||
- | |||
- | ===== Construction de la stack ===== | ||
- | |||
- | <code bash> | ||
- | docker-compose build | ||
- | </code> | ||
- | |||
- | ===== Lancer/Arrêter la stack ===== | ||
- | |||
- | Lancer la stack : | ||
- | |||
- | <code bash> | ||
- | docker-compose up | ||
- | </code> | ||
- | |||
- | Les messages provenant des différentes images en cours de fonctionnement sont affichées | ||
- | dans le terminal. Pour tout fermer, taper **Ctrl+C**. | ||
- | |||
- | * [[http://localhost:8000|localhost:8000 : Le projet Symfony]] | ||
- | * [[http://localhost:8080|localhost:8080 : PhpMyAdmin]] (login **root** sans mot de passe) | ||
- | * [[http://localhost:8002|localhost:8002 : MailDev]] | ||
- | |||
- | > 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 : | ||
- | |||
- | <code bash> | ||
- | docker exec -u 1000 -it $(docker ps -aqf "name=php72") bash; | ||
- | </code> | ||
- | |||
- | Créer le projet avec Composer : | ||
- | |||
- | <code bash> | ||
- | composer create-project symfony/website-skeleton mon_projet | ||
- | </code> | ||
- | |||
- | <code bash> | ||
- | composer require symfony/apache-pack | ||
- | </code> | ||