Écosystème technique
WSL
Travaillant habituellement sous Linux, je me retrouve à utiliser des machines sous Windows dans le cadre de mon stage. Heureusement, il existe WSL (Windows Subsystem for Linux) qui permet de faire coexister une distribution Linux à côté de Windows.
Cet environnement WSL est nécessaire au bon fonctionnement de Docker. IL a été particulièrement compliqué à faire tourner sur ma machine. En effet, si la fonctionnalité était bien disponible, il n'était rien possible d'installer, ni une distribution Linux, ni Docker. En charhchant les causes d'erreur avec une IA et surtout sur les forums, j'ai fin par trouver qu'il fallait, en plus d'activer Subsystem Linux et Virtual Machine Platform Windows, je devais activer Hyper-V (astuce pour accéder à ces réglages rapidement : touche WIN + R et saisir optionalfeatures).
Je peux à présent installer une distribution Linux parmi une petite douzaine disponible :
- lister les distributions disponibles :
wsl --list --online - installer une distribution par défaut :
wsl --install(c'est Ubuntu) - installer une distribution de la liste :
wsl --install <nom_distro>par exemplewsl --install archlinux.
Docker
Pour avoir un environnement de travail sécurisé en terme de développement, je vais travailler avec Docker. On me fournit :
- un fichier
compose.yamldéclarant les images nécessaires pour faire tourner le système :
services:
php:
build: ../php
container_name: dev-php
ports:
- "8081:80"
volumes:
- ../www:/var/www/html:cached
environment:
TZ: UTC
depends_on:
- mysql
networks:
- devnet
mysql:
image: mysql:8.0
container_name: dev-mysql
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: root
TZ: UTC
ports:
- "3306:3306"
volumes:
- ../mysql/data:/var/lib/mysql
command: --default-authentication-plugin=mysql_native_password --max_allowed_packet=1G --default-time-zone='+00:00'
networks:
- devnet
phpmyadmin:
image: phpmyadmin:latest
container_name: dev-phpmyadmin
restart: unless-stopped
depends_on:
- mysql
ports:
- "8082:80"
environment:
PMA_HOST: mysql
PMA_USER: root
PMA_PASSWORD: root
UPLOAD_LIMIT: 2G
networks:
- devnet
networks:
devnet:
driver: bridge- un fichier
Dockerfilepour le serveur Apache et PHP :
FROM php:8.2-apache
# Installation librairies système
RUN apt-get update && apt-get install -y \
git \
unzip \
libzip-dev \
libpng-dev \
libjpeg62-turbo-dev \
libfreetype6-dev \
libonig-dev \
libxml2-dev \
libicu-dev \
libcurl4-openssl-dev \
pkg-config \
libssl-dev \
gettext \
libxslt1-dev \
&& rm -rf /var/lib/apt/lists/*
# Configuration GD
RUN docker-php-ext-configure gd \
--with-freetype \
--with-jpeg
# Installation extensions PHP
RUN docker-php-ext-install \
pdo \
pdo_mysql \
mysqli \
intl \
zip \
opcache \
gettext \
gd \
bcmath \
soap
# Activation Apache
RUN a2enmod rewrite
# Configuration PHP personnalisée
COPY php.ini /usr/local/etc/php/php.ini
WORKDIR /var/www/html- tout ceci dans une arborescence type :
mysqlpour recevoir les données de la base ;phppour leDockerfileet lephp.ini;stackpour lecompose.yml;wwwpour le code du projet TODD (environnement de fonctionnement et plugin TODD).
Trois serveurs sont disponibles :
- le serveur pour la base de donnée MySQL ;
- un serveur pour phpMyAdmin, accessible à l'adresse
127.0.0.1:8082; - un serveur pour le service web, accessible à l'adresse
127.0.0.1:8081
TODD
Je clone un écosystème maison type dans lequel le module TODD sur lequel je vais travailler est présent. Un mécanisme d'installation plutôt malin, basé sur la détection d'un fichier site.conf.php. Si ce fichier n'existe pas, un fichier install.php prend le relai et demande à l'utilisateur les éléments nécessaire pour fonctionner (adresse du serveur mysql, nom et mot de passe d'utilisateur, etc.). Le fichier site.conf.php est donc créé à la volée et contiendra tous les paramètres.