1.5 : Mise à disposition des utilisateurs d'un service informatique
- 1.5.1 Déployer un service
Contexte
L'utilisation de symfony serve:start entraînait des temps de chargement de
10 à 20 secondes par page, ce qui rendait le développement peu efficace.
Un environnement Docker a donc été mis en place pour améliorer les performances.
Structure de l'environnement Docker
Trois fichiers ont été créés :
Dockerfile: définit l'image de base et installe les dépendances nécessairesdocker-compose.yml: configure le service principaldocker-compose.override.yml: surcharge dédiée au développement
Dockerfile
FROM php:8.2-apache
RUN useradd -m exemple_user
RUN usermod -aG www-data exemple_user
RUN apt-get update && apt-get install -y \
git \
zip \
unzip \
libpng-dev \
libzip-dev \
curl \
&& rm -rf /var/lib/apt/lists/*
RUN docker-php-ext-install zip
RUN curl -1sLf 'https://dl.cloudsmith.io/public/symfony/stable/setup.deb.sh' | bash
RUN apt-get install -y symfony-cli
RUN echo 'alias sf="symfony console"' >> /home/exemple_user/.bashrc
RUN a2enmod rewrite
RUN mkdir -p /var/www/html/nomDuProjet
COPY . /var/www/html/nomDuProjet
COPY ./000-default.conf /etc/apache2/sites-available/
COPY ./php.ini /usr/local/etc/php/conf.d/app.ini
RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
RUN php composer-setup.php
RUN php -r "unlink('composer-setup.php');"
RUN mv composer.phar /usr/local/bin/composer
USER exemple_user
WORKDIR /var/www/html/nomDuProjet
Docker-Compose
services:
nomDuProjet:
volumes:
- .:/var/www/html/nomDuProjet
- ./git-hook:/var/www/html/nomDuProjet/.git/hooks/
- ~/.ssh:/home/exemple_user/.ssh
restart: always
ports:
- 8080:80
Fonctionnement
Le fichier docker-compose.override.yml monte le projet en volume, ce qui permet
de modifier le code directement sans avoir à rebuilder le conteneur à chaque
modification.
Un volume SSH a également été ajouté pour permettre de pusher vers GitHub directement depuis le conteneur Docker.
Commandes utiles
Démarrer les conteneurs :
docker compose up --build -d
Vérifier les services et le nom des conteneurs :
docker compose ps
Ouvrir un shell dans le conteneur :
docker exec -it nomDuContainer bash
Arrêter et supprimer les conteneurs :
docker compose down