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

1sudo 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

1{
2  "bip": "10.100.0.1/24",
3  "default-address-pools": [
4    {"base":"10.101.0.0/16","size":24},
5    {"base":"10.102.0.0/16","size":24}
6  ]
7}

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 :

 1version: '3.7'
 2
 3services:
 4
 5  evqueue-core:
 6    image: coldsource/evqueue-core:3.0
 7    hostname: evqueue-core
 8    container_name: qc_evqueue_core
 9    restart: always
10    networks:
11      qc:
12        aliases:
13          - core.evqueue.qc.test
14    environment:
15      mysql_host: db.evqueue.qc.test
16      mysql_user: evqueue
17      mysql_password: evqueue
18
19  evqueue-db:
20    image: mariadb:10.3.22
21    hostname: evqueue-db
22    container_name: qc_evqueue_db
23    restart: always
24    networks:
25      qc:
26        aliases:
27          - db.evqueue.qc.test
28    environment:
29      MYSQL_DATABASE: evqueue
30      MYSQL_USER: evqueue
31      MYSQL_PASSWORD: evqueue
32      MYSQL_ROOT_PASSWORD: root
33      TZ: Europe/Paris
34
35  evqueue-frontend:
36    image: coldsource/evqueue-frontend-php
37    hostname: evqueue-frontend
38    container_name: qc_evqueue_frontend
39    restart: always
40    networks:
41      qc:
42        aliases:
43          - www.evqueue.qc.test
44    ports:
45      - 81:80
46
47  pma:
48    image: phpmyadmin/phpmyadmin:4.6.6-2
49    hostname: pma
50    container_name: qc_pma
51    restart: always
52    networks:
53      qc:
54        aliases:
55          - pma.qc.test
56    ports:
57      - 82:80
58    environment:
59      PMA_HOSTS: db.evqueue.qc.test
60
61networks:
62  qc:

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

1127.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)

1docker-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:

comments powered by Disqus