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:
- http://www.evqueue.qc.test:81/evqueue pour accéder à l'interface de evQueue (admin/admin)
- http://pma.qc.test:82 pour accéder au phpmyadmin