Skip to content

```markdown

Docker-compose, apache, php, mariadb

C’est quoi Docker-compose :

C’est un outil qui permet de définir et gérer des applications multi-conteneurs. Ce docker utilise un fichier YAML (Représentation des informations lisible par l’Homme).

Configurer Docker-compose :

Tout d’abord, il faudra cloner votre dépôt git sur votre VM :

Revoir mission 24/05 : lien pour le département.

Allez dans le titre “Configuration pour “cloner” et “push” sur Ubuntu : ”

Ensuite, il faudra aller à la racine du dépôt et créer différents dossiers :

Docker-compose.yml :

version: '3.7'

services: 
  db:
    image: mariadb:10   # Service du container 
    container_name: mariadb  # Son nom
    restart: always    # Il reste toujours allumé
    ports: ['3306:3306']
    volumes:          # Endroit stockant les informations et données du container
      - ./db_data:/var/lib/mysql
      - ./backups:/backups
    environment:
      MYSQL_DATABASE: $MYSQL_DATABASE
      MYSQL_USER: $MYSQL_USER
      MYSQL_PASSWORD: $MYSQL_PASSWORD
      MYSQL_ALLOW_EMPTY_PASSWORD: 'no'
      MYSQL_ROOT_PASSWORD: $MYSQL_ROOT_PASSWORD
    env_file:
      - .env  # Il va chercher les informations de ce fichier

  web:
    build: .  # Il construit le conteneur à la racine du dépôt
    container_name: apache2
    restart: always
    depends_on: ['db']
    ports: ['80:80'] # numéros de port de sortie du conteneur
    links: ['db:db']
    volumes:
      - './www:/var/www/html' # Endroit où il va chercher le contenu et stocker 
    environment: # Il va récupérer les données de la base de données
      MYSQL_DB_HOST: db
      MYSQL_DATABASE: $MYSQL_DATABASE
      MYSQL_USER: $MYSQL_USER
      MYSQL_PASSWORD: $MYSQL_PASSWORD

    env_file:
      - .env  # Il va chercher les informations de ce fichier

Backups, db_data, www :

Il faudra créer ces fichiers dans le dépôt pour les “Volumes”.

Installer WordPress sur le dossier “www” :

WordPress est un système de gestion de contenu gratuit, libre et open source. Ce logiciel écrit en php repose sur une base de données MySQL.

Pour installer WordPress sur “www”, il vous suffira de vous placer dedans :

cd www/

Et de faire la commande :

wget https://wordpress.org/latest.zip

Attention :

Il faut penser à “unzip“ le fichier “latest.zip“

Pour cela il faudra installer le paquet unzip :

sudo apt install unzip

Enfin, faites la commande dans “www” :

unzip latest.zip

Pour que WordPress fonctionne, il faut installer une extension PHP

DockerFiles :

Les Dockerfile vous permettent de configurer et de créer rapidement une image pour la rendre plus partageable facilement.

Il vous suffira de créer un fichier Dockerfile toujours à l’intérieur de votre dépôt :

FROM    php:7.4-apache 
# Il va chercher le PHP Apache 
RUN     docker-php-ext-install mysqli
# Et il va installer l'extension 

Attention :

Il faudra modifier les droits de ”www” : ”chmod -R 777.”

Lancement docker-compose :

Une fois tout cela configuré, vous pourrez lancer la commande :

sudo docker-compose up

Cela va lancer votre docker-compose. Il vous suffira d'ouvrir un navigateur et taper le nom de votre machine et vous verrez WordPress. Il faudra renseigner le nom de votre site et les informations de votre BDD précédemment définies dans le fichier “docker-compose”.

Voilà votre site sur le serveur Apache sur un docker. Maintenant laissez les devs travailler !

Push le dépôt sans avoir accès au ID de connexion et au mot de passe :

Il est important de savoir faire cela car si vous mettez tous vos dossiers dans votre dépôt public et que dans ces dossiers tout le monde peut accéder à vos de mot de passe. Votre site sera en aucun cas sécurisé.

.gitignore :

Ce fichier sert à indiquer quels fichiers il va ignorer pendant le push, pour cela il faudra créer ce fichier toujours dans votre dépôt. Il faudra inscrire dans ce fichier les fichiers sensibles envers votre site :

www/
backups/
db_data/
.env

Quand vous allez faire un push dans votre GitLab, ces fichiers n'y seront pas.

.env :

Le fichier .env est un fichier caché sur votre VM qui permet de déclarer des variables pour les informations importantes, par exemple :

“MYSQL_PASSWORD = Votre password”

Votre fichier doit ressembler à cela :

# Declaration Variable 

MYSQL_USER : NOMUTILISATEUR 
MYSQL_PASSWORD : MOTPASSEUSER  
MYSQL_ROOT_PASSWORD : MOTDEPASSEROOT
MYSQL_DATABASE : NOMBASE 

.env_sample :

Pour aider les gens à créer leur “.env” sans mettre vos informations, il est possible de faire un exemple et ce fichier contrairement au “.env” sera push dans le dépôt.

Une fois tout cela configuré, il vous suffira de push votre dépôt sur la VM et vos fichiers seront sur le GitLab en ligne.

Rappel pour push : Faites un “git add – A”, puis un “git commit –m , enfin le “git push”.