Passer au contenu principal

Blog de Guillaume Seznec

evQueue avec Docker

evQueue est un ordonnanceur de tâches. Il est fourni avec des images Docker, voyons comment l’installer facilement.

Installation / configuration Docker

prérequis: installer docker et docker-compose. Ex sous Ubuntu

sudo apt-get install docker.io docker-compose

Docker utilise une couche de réseau “virtuel” avec des ips en 172.17.0.0 ce qui est en conflit avec certains réseaux internes. L’astuce est de forcer Docker à utiliser une autre plage d’ips pour ses réseaux :

créez/éditez le fichier /etc/docker/daemon.json

{
  "bip": "10.100.0.1/24",
  "default-address-pools": [
    {"base":"10.101.0.0/16","size":24},
    {"base":"10.102.0.0/16","size":24}
  ]
}

Lancement des conteneurs

L’environnement evQueue est composé de 4 conteneurs, chaque conteneur disposant de sa propre ip. Un conteneur peut être vu comme une “machine virtuelle légère”. Un conteneur ne sert en principe que pour un service donné. evQueue peut être décomposé de la façon suivante :

  • evqueue-core : l’applicatif principal, le serveur en C++
  • evqueue-db : la base de données MariaDB pour la persistence des données
  • evqueue-frontend : la webapp apache/php qui accède au serveur
  • phpmyadmin : l’app apache/php qui permet de consulter la base de données

Le fichier docker-compose.yml défini les images à créer, les conteneurs à instancier, les variables d’environnement, les dépendances entre conteneurs, les ports exposés (qui peuvent être mappées sur la machine locale faisant tourner Docker). On n’utilise que des images officielles. Voici son contenu :

version: '3.7'

services:

  evqueue-core:
    image: coldsource/evqueue-core:3.0
    hostname: evqueue-core
    container_name: qc_evqueue_core
    restart: always
    networks:
      qc:
        aliases:
          - core.evqueue.qc.test
    environment:
      mysql_host: db.evqueue.qc.test
      mysql_user: evqueue
      mysql_password: evqueue

  evqueue-db:
    image: mariadb:10.3.22
    hostname: evqueue-db
    container_name: qc_evqueue_db
    restart: always
    networks:
      qc:
        aliases:
          - db.evqueue.qc.test
    environment:
      MYSQL_DATABASE: evqueue
      MYSQL_USER: evqueue
      MYSQL_PASSWORD: evqueue
      MYSQL_ROOT_PASSWORD: root
      TZ: Europe/Paris

  evqueue-frontend:
    image: coldsource/evqueue-frontend-php
    hostname: evqueue-frontend
    container_name: qc_evqueue_frontend
    restart: always
    networks:
      qc:
        aliases:
          - www.evqueue.qc.test
    ports:
      - 81:80

  pma:
    image: phpmyadmin/phpmyadmin:4.6.6-2
    hostname: pma
    container_name: qc_pma
    restart: always
    networks:
      qc:
        aliases:
          - pma.qc.test
    ports:
      - 82:80
    environment:
      PMA_HOSTS: db.evqueue.qc.test

networks:
  qc:

Les conteneurs ayant chacun leur host, précisons les dans un /etc/hosts pour y accéder facilement :

127.0.0.1 pma.qc.test db.evqueue.qc.test core.evqueue.qc.test www.evqueue.qc.test

Puis démarrons tous ces conteneurs dans une fenêtre de terminal (le fichier docker-compose.yml doit être dans le même répertoire)

docker-compose up

Si tout se passe bien, vous devez voir défiler les logs des 4 conteneurs. Désormais vous pouvez accéder aux webapps servis par les conteneurs qui exposent leurs ports vers l’extérieur: