TrAsKiN.net, geek since 1337

Note #1 : Environnement de développement avec Docker sous Windows 10 16/11/2016

Voilà maintenant plusieurs jours que je tente de configurer un environnement de développement PHP / SQL avec Docker sous Windows 10 (en version Professionnel). J'ai lu beaucoup de documentations, pas mal de forums et autre Stack Overflow... Je pense être arrivé à un stade où la configuration me convient et j'ai décidé de le noter ici. Je pars du principe que Docker est installé sans passer par une machine virtuelle.

C'est parti pour du code (pas forcément commenté) !

La première étape est la configuration du container de l'application, ici Symfony, avec un fichier Dockerfile. J'ai choisi d'utiliser comme base le container officiel de php en version 7 et sous Apache. Voici ce qu'il contient :

FROM php:apache

RUN a2enmod rewrite

RUN docker-php-ext-install pdo_mysql opcache

RUN apt-get update \
    && apt-get install -y libicu-dev \
    && docker-php-ext-configure intl \
    && docker-php-ext-install intl

RUN { \
        echo 'short_open_tag = Off'; \
    } | tee "/usr/local/etc/php/php.ini"

J'active l'url rewriting d'Apache, puis j'installe les modules dont Symfony à besoin pour fonctionner et la configuration recommandée de php.

Pour faciliter la mise en place des containers j'utilise docker-compose afin de lier et de les exécuter simplement. Pour ça il faut créer un fichier docker-compose.yml.

version: '2'
services:
    web:
        build: .
        volumes:
            - .:/var/www/html
        depends_on:
            - db
        links:
            - db
        ports:
            - "80:80"

    db:
        image: mariadb
        environment:
            MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
            MYSQL_ROOT_PASSWORD: ''
        volumes:
            - database:/var/lib/mysql
        ports:
            - "3306:3306"

volumes:
    database:

Il y a le container web contenant l'application ainsi qu'un container db contenant la base de données. Cela crée aussi un volume spécifique pour la base de données gérée par Docker.

Maintenant il suffit de lancer la commande docker-compose up (pour initialiser la première configuration). Notez le nom du network créé par Docker, nous en aurons besoin plus tard. Une vérification sur http://localhost/web/ pour valider que tout fonctionne, on arrête les containers en faisant Ctrl+C puis on les relance avec docker-compose start.

Nous avons terminé la mise en place de l'environnement de développement PHP / SQL. Toutefois, on a souvent besoin d'un gestionnaire de base de données comme phpMyAdmin ou Adminer. Voici ma solution pour installer un container phpMyAdmin qui fonctionnera avec toutes vos applications utilisant cet environnement. Pour cela, il suffit d'exécuter les deux commandes suivantes :

docker run --name phpmyadmin -d -e PMA_HOST=db -p 8080:80 phpmyadmin/phpmyadmin

docker network connect <nom_du_network> phpmyadmin

Et voilà ! Un environnement complet pour développer vos applications Symfony !

Ha ! J'oubliais, c'est une configuration à ne pas utiliser en production à cause de la configuration de la base de données qui n'est pas protégée !

Commentaire

Aucun commentaire.


Ecrire un commentaire