Docker LAMP Stack + Symfony



1.1. Docker

Installer docker et docker-compose :

sudo apt install docker docker-compose

1.2. Stack LAMP

1.2.1. Téléchargement

Télécharger grâce à git, la stack LAMP (Linux Apache MySQL PHP) depuis l'adresse suivante :

git clone https://github.com/sprintcube/docker-compose-lamp

Se rendre dans le répertoire du projet et copier le fichier sample.env dans .env :

cd docker-compose-lamp/
cp sample.env .env

1.2.2. Modification de la configuration

Modifiez le fichier .env de manière à pouvoir utiliser PHP dans sa version 8.1 et exposer le serveur web sur le port 81 :

PHPVERSION=php8  ==> PHPVERSION=php81
HOST_MACHINE_UNSECURE_HOST_PORT=80 ==> HOST_MACHINE_UNSECURE_HOST_PORT=81

Dans le fichier docker-compose.yml ajoutez la redirection du port 8000 vers le port 9000, et supprimer la section liée à Redis :

services:
  webserver:
    build:
      context: ./bin/\${PHPVERSION}
    container_name: "\${COMPOSE_PROJECT_NAME}-\${PHPVERSION}"
    restart: "always"
    ports:
      - "\${HOST_MACHINE_UNSECURE_HOST_PORT}:80"
      - "\${HOST_MACHINE_SECURE_HOST_PORT}:443"
      - "9000:8000"

1.2.3. Modification de l'utilisateur

Passez l'utilisateur courant dans le groupe docker, pour cela suivre le tutoriel suivant, qui consiste à réaliser les opérations suivantes :

sudo groupadd -f docker
sudo chown root:docker /var/run/docker.sock
sudo usermod -a -G docker "\$(whoami)"
newgrp docker
sudo systemctl restart docker

1.2.4. Générer les images

Générer les images docker en saisissant la commande suivante (aller ensuite prendre un café...) :

docker-compose up -d

Une fois la l'installation terminée, vérifier que tout fonctionne normalement par :

docker ps

CONTAINER ID   IMAGE            COMMAND                  CREATED         STATUS         PORTS                                                                                                                 NAMES
a37011e1055d   lamp_webserver   "docker-php-entrypoi…"   5 minutes ago   Up 5 minutes   0.0.0.0:443->443/tcp, :::443->443/tcp, 0.0.0.0:81->80/tcp, :::81->80/tcp, 0.0.0.0:9000->8000/tcp, :::9000->8000/tcp   lamp-php81
191a80e87c6d   phpmyadmin       "/docker-entrypoint.…"   5 minutes ago   Up 5 minutes   0.0.0.0:8080->80/tcp, :::8080->80/tcp, 0.0.0.0:8443->443/tcp, :::8443->443/tcp                                        lamp-phpmyadmin
89c08db64784   lamp_database    "docker-entrypoint.s…"   5 minutes ago   Up 5 minutes   127.0.0.1:3306->3306/tcp, 33060/tcp  lamp-mysql8

1.2.5. Installation de Symfony

On va ensuite installer Symfony sur la lamp_webserver, pour cela on se connecte au serveur :

docker exec -it a37011e1055d  sh

Puis on met à jour les paquets de Symfony et on l'installe :

curl -1sLf 'https://dl.cloudsmith.io/public/symfony/stable/setup.deb.sh' | bash
apt install symfony-cli

On se rend dans le répertoire du server web et on configure le projet :

cd /var/www/html
git config --global user.email "jean-michel.richer@univ-angers.fr"
git config --global user.name "Jean-Michel Richer"
symfony new --webapp my_project
exit
Une fois sorti de lamp_webserver on se rend dans le répertoire correspondant dans la Stack :
cd www
sudo chown -R richer.richer my_project