Site icon Developpeur / integrateur web (Growth Hacker)

Docker comme environnement de développement, ça déchire

Docker pour le développement web

Docker pour développer c’est excellent.
Mais ça sert à quoi Docker ?
Et surtout comment cela fonctionne ?

Docker (dans notre exemple) va nous permettre d’installer un environnement de dév’ très rapidement. On peut switcher d’une version de PrestaShop à une autre (toujours dans notre exemple). Obtenir un environnement de « Dev » identique à celle de la « Prod ». Cela nous permettra aussi de déployer des configurations de serveur complexe, en quelques lignes de commande.

Bref on peut faire énormément de chose avec Docker (tester un environnement, config, CMS, test unitaire, etc …). Je vais juste vous présenter une infime partie de la solution pour utiliser un serveur x avec une solution y (ici « y » sera PrestaShop).

Comment installer PrestaShop avec Docker ?

Copier/coller les lignes ci-dessous :

# 1/ Installer PrestaShop :
docker run -ti –name some-prestashop -p 8080:80 -d prestashop/prestashop:1.7
# 2/ Installer PhpMyAdmin :
docker run –name psphpmyadmin -d –link some-prestashop:db -p 8081:80 phpmyadmin/phpmyadmin
# 3/ Copier les sources :
docker cp some-prestashop:/var/www/html/themes/ /Users/Michael/Documents/docker/prestashop/
docker cp some-prestashop:/var/www/html/modules/ /Users/Michael/Documents/docker/prestashop/
docker cp some-prestashop:/var/www/html/override/ /Users/Michael/Documents/docker/prestashop/

Il ne restera plus cas faire pointer le « volume » :

NB : la 1er fois cela va charger l’image (cela prendra un peu de temps), puis lors des prochaines utilisations l’image sera rappelée sur votre machine (avec un « Docker run … », qui exécute un « docker create » et un « docker start »). Donc en gros, cela ira beaucoup plus vite (par contre on perdra les changements appliqués, puisqu’on repart de l’image).

Oui mais cela sert à quoi ?

  1. Nous lançons le « container » pour PrestaShop (version 1.7)
    Il sera nommé « some-prestashop »
    Il utilisera le port 8080 de votre machine, et pointera sur le port 80 du « container »
  2. Puis nous allons utiliser un autre « container » pour PhpMyAdmin
    Il sera nommé « psphpmyadmin »
    Il utilisera le port 8081 de votre machine, et pointera sur le port 80 du « container »
    On le lie au « container » précédent nommé « some-prestashop »
  3. Puis pour pouvoir travailler en local sur votre code source (et surtout avoir une copie sur votre machine), car si vous lancez de nouveau le « container » avec un « run », vous allez récupérer l’image de ce dernier (et perdre vos modifications).
    En gros sur l’étape 3 on copie les sources du « container » vers votre machine.

Mais où trouver les « images » :

Vous pouvez maintenant accéder à PrestaShop 1.7 :

Ouvrez votre navigateur puis inscrivez 192.168.99.100:8080

Quelques lignes de commande pour Docker :

Faite un « docker –help » pour voir les informations ci-dessous.

En Anglais :

En Français :

Docker-compose, hein ?

La commande « docker-compose up -d » va vous servir à lancer un fichier docker-compose.yml avec une config prédéfinie à l’intérieur.
Bon avec un exemple cela sera plus simple 🙂

Installer WordPress avec Docker :

On va installer un WordPress et PhpMyAdmin :

  1. On crée un fichier « docker-compose.yml », le télécharger sur :
    github.com/eewee/docker-wordpress-phpmyadmin
  2. On se place dans le dossier ne contenant que le fichier « docker-compose.yml ».
  3. On lance un « docker-compose up -d ».
  4. Tapez maintenant l’url suivante :
    localhost, pour accéder à la page d’installation de WordPress.
    localhost:8080, pour accéder à la page de PhpMyAdmin.

Un peu d’explication sur le fichier docker-compose.yml utilisé :

# On donne le nom « wordpress » à ce container,
# à partir de l’image « wordpress »,
# on le lie à notre bdd nommée « db »,
# sur le port 80 de notre machine, qui pointe sur le port 80 de notre « container »,
# puis pour finir on copie le « volume ».

wordpress:
image: wordpress:latest
links:
– db:mysql
ports:
– 80:80
volumes:
# copy in path windows
– ./:/var/www/html/

# On donne le nom « wpmariadb » à ce container,
# à partir de la dernière image « mariadb »,
# on init une variable « MYSQL_ROOT_PASSWORD = root »,
# sur le port 3306 de notre machine, qui pointe sur le port 3306 de notre « container ».

db:
image: mariadb:latest
container_name: wpmariadb
environment:
MYSQL_ROOT_PASSWORD: root
ports:
– 3306:3306

# On donne le nom « wpphpmyadmin » à ce « container »,
# à partir de l’image « phpmyadmin/phpmyadmin »,
# on le lie à notre bdd nommée « db »,
# on init 2 variables « MYSQL_USERNAME= root » et « MYSQL_ROOT_PASSWORD=root »,
# sur le port 8080 de notre machine, qui pointe sur le port 80 de notre « container »,
# on crée un volume « /sessions ».

phpmyadmin:
image: phpmyadmin/phpmyadmin:latest
container_name: wpphpmyadmin
links:
– db:db
environment:
MYSQL_USERNAME: root
MYSQL_ROOT_PASSWORD: root
restart: always
ports:
– 8080:80
volumes:
– /sessions

Dockerfile, encore, hein ?

Je vous laisse voir par ici : docs.docker.com/engine/userguide/eng-image/dockerfile_best-practices

Docker Cheat Sheet :

Télécharger le PDF (notes sur des commandes Docker)

Allez plus loin :

Utilise l’image docker de bitnami pour WordPress :
https://hub.docker.com/r/bitnami/wordpress 
https://github.com/bitnami/bitnami-docker-wordpress 

Article avec wp-cli en plus :
datanovia.com

Quitter la version mobile