|
693
|
1 |
#################### |
|
|
2 |
Images Docker HDALab |
|
|
3 |
#################### |
|
|
4 |
|
|
|
5 |
|
|
|
6 |
L'application HDALab a été conteneurisée en 5 services dont 2 nécessite |
|
|
7 |
la construction d'une image. Les services sont orchestrés avec |
|
|
8 |
l'application ``docker-compose``. L'ensemble expose les ports suivant |
|
|
9 |
sur l'ordinateur hôte: |
|
|
10 |
|
|
|
11 |
- port 8080 : l'interface web HDALab |
|
|
12 |
- port 8025 : Accès à l'interface de consultation `mailhog <https://github.com/mailhog/MailHog>`__. |
|
|
13 |
- port 5432 : port serveur postgresql |
|
|
14 |
|
|
|
15 |
Mise place des images conteneurs docker |
|
|
16 |
--------------------------------------- |
|
|
17 |
|
|
|
18 |
Deux possibilités existent pour mettre en place les images docker : |
|
|
19 |
- construire les images |
|
|
20 |
- import des images |
|
|
21 |
|
|
|
22 |
Construction des images |
|
|
23 |
~~~~~~~~~~~~~~~~~~~~~~~ |
|
|
24 |
|
|
|
25 |
Les commandes suivantes permettent de construire les images. Ces |
|
|
26 |
commandes sont à lancer dans le même répertoire que le fichier |
|
|
27 |
``docker-compose.yml``. |
|
|
28 |
|
|
|
29 |
:: |
|
|
30 |
|
|
|
31 |
$ ./prepare_docker_build.sh |
|
|
32 |
$ docker-compose -p hdalab build |
|
|
33 |
|
|
|
34 |
Import des images |
|
|
35 |
~~~~~~~~~~~~~~~~~ |
|
|
36 |
|
|
|
37 |
Lancer cette commande pour charger les images du projet. |
|
|
38 |
|
|
|
39 |
:: |
|
|
40 |
|
|
|
41 |
$ docker load -i <chemin/vers/fichier/archives/images> |
|
|
42 |
|
|
|
43 |
Comment construire les container HDALab |
|
|
44 |
--------------------------------------- |
|
|
45 |
|
|
|
46 |
Toutes les commandes suivantes sont à effectuer dans le répertoire |
|
|
47 |
contenant le fichier ``docker-compose.yml``. |
|
|
48 |
|
|
|
49 |
:: |
|
|
50 |
|
|
|
51 |
$ docker-compose -p hdalab up -d |
|
|
52 |
$ docker-compose -p hdalab exec hdalab django-admin collectstatic --noinput |
|
|
53 |
$ docker-compose -p hdalab exec hdalab django-admin migrate --noinput |
|
|
54 |
$ docker-compose -p hdalab exec hdalab supervisorctl restart all |
|
|
55 |
|
|
|
56 |
Le site est consultable à l'adresse suivante : http://127.0.0.1:8080 Le |
|
|
57 |
système est fonctionnel mais avec une bases de donnée vide. |
|
|
58 |
|
|
|
59 |
Lancement d'une commande Django |
|
|
60 |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
|
|
61 |
|
|
|
62 |
Lancer cette commande pour avoir accès à l'utilitaire de gestion Django |
|
|
63 |
(c.f. |
|
|
64 |
`django-admin <https://docs.djangoproject.com/en/1.8/ref/django-admin/>`__) |
|
|
65 |
|
|
|
66 |
:: |
|
|
67 |
|
|
|
68 |
$ docker-compose -p hdalab exec hdalab django-admin <command> [options] |
|
|
69 |
|
|
|
70 |
Pour obtenir la liste des commandes disponibles faire: |
|
|
71 |
|
|
|
72 |
:: |
|
|
73 |
|
|
|
74 |
$ docker-compose -p hdalab exec hdalab django-admin |
|
|
75 |
|
|
|
76 |
Création d'un "superuser" |
|
|
77 |
~~~~~~~~~~~~~~~~~~~~~~~~~ |
|
|
78 |
|
|
|
79 |
Cette commande permet la creation d'un utilisateur administeur de |
|
|
80 |
l'application. |
|
|
81 |
|
|
|
82 |
:: |
|
|
83 |
|
|
|
84 |
$ docker-compose -p hdalab exec hdalab django-admin createsuperuser |
|
|
85 |
|
|
|
86 |
Import des données issues de l'export HDA |
|
|
87 |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
|
|
88 |
|
|
|
89 |
Cette commande importe les données RDF exportées à partir de |
|
|
90 |
l'application HDA. Attention cette commande peut être longue (plusieurs |
|
|
91 |
heures). |
|
|
92 |
|
|
|
93 |
:: |
|
|
94 |
|
|
|
95 |
$ docker-compose -p hdalab exec hdalab /usr/local/sbin/import_hda_rdf.sh /etc/hdalab/data /var/lib/hdalab http://data.culture.fr/entrepot/HDA/export.tgz |
|
|
96 |
|
|
|
97 |
Import d'un dump de l'application |
|
|
98 |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
|
|
99 |
|
|
|
100 |
Import d'un dump de la base de donnée |
|
|
101 |
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
|
|
102 |
|
|
|
103 |
Le fichier de dump de base de données doit être décompressé. |
|
|
104 |
|
|
|
105 |
:: |
|
|
106 |
|
|
|
107 |
$ docker-compose -p hdalab stop hdalab |
|
|
108 |
$ docker exec -i hdalab_pg_1 psql -U iri postgres < </chemin/du/fichier/dump/sql.bckp> |
|
|
109 |
$ docker-compose -p hdalab start hdalab |
|
|
110 |
$ docker-compose -p hdalab exec hdalab django-admin migrate --noinput |
|
|
111 |
$ echo "from django.contrib.sites.models import Site; site=Site.objects.all()[0]; site.domain='127.0.0.1:8080'; site.name='HDALab'; site.save()" | docker exec -i hdalab_hdalab_1 django-admin shell |
|
|
112 |
$ docker-compose -p hdalab exec hdalab django-admin changepassword admin |
|
|
113 |
$ docker-compose -p hdalab exec hdalab django-admin rebuild_index --noinput |
|
|
114 |
|
|
|
115 |
Import des miniatures renkan |
|
|
116 |
^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
|
|
117 |
|
|
|
118 |
Ces commandes supposent que le service ``hdalab`` est actif. L'archive |
|
|
119 |
comprenant l'export des miniatures doit être décompressé. Cette archive |
|
|
120 |
contient le répertoire ``media`` à la racine |
|
|
121 |
|
|
|
122 |
:: |
|
|
123 |
|
|
|
124 |
$ docker cp ./media/. hdalab_hdalab_1:/var/lib/hdalab/static/media |
|
|
125 |
|
|
|
126 |
Commandes utiles |
|
|
127 |
================ |
|
|
128 |
|
|
|
129 |
liste des services |
|
|
130 |
------------------ |
|
|
131 |
|
|
|
132 |
Les services suivants sont définis dans le fichier |
|
|
133 |
``docker-compose.yml``: - pg : La base de donnée postgresql - es : |
|
|
134 |
ElasticSearch - mail : Mailhog, fourni un serveur smtp de test - front : |
|
|
135 |
Le serveur web (nginx) - hdalab : application hdalab comprenant |
|
|
136 |
l'application web elle-même et les services associés (envoi de mail et |
|
|
137 |
calcul des preevisualisations Renkan) |
|
|
138 |
|
|
|
139 |
Démarrage des services |
|
|
140 |
---------------------- |
|
|
141 |
|
|
|
142 |
Les services se contrôlent avec la commande ``docker-compose``. La ligne |
|
|
143 |
de commande typique est la suivante: |
|
|
144 |
|
|
|
145 |
:: |
|
|
146 |
|
|
|
147 |
$ docker-compose [-f </path/to/docker-compose.yml>] -p hdalab [COMMAND] [ARGS...] |
|
|
148 |
|
|
|
149 |
Il faut bien noter l'utilisation systématique de l'option ``-p hdalab`` |
|
|
150 |
qui spécifie le nom du projet. Si la commande est lancée dans le même |
|
|
151 |
répertoire que celui du fichier ``docker-compose.yml`` l'option ``-f`` |
|
|
152 |
peut être ignorée. |
|
|
153 |
|
|
|
154 |
Construction des images des conteneurs |
|
|
155 |
-------------------------------------- |
|
|
156 |
|
|
|
157 |
:: |
|
|
158 |
|
|
|
159 |
$ docker-compose [-f </path/to/docker-compose.yml>] -p hdalab build [SERVICE...] |
|
|
160 |
|
|
|
161 |
création et lancement des services |
|
|
162 |
---------------------------------- |
|
|
163 |
|
|
|
164 |
:: |
|
|
165 |
|
|
|
166 |
$ docker-compose [-f </path/to/docker-compose.yml>] -p hdalab up -d [SERVICE...] |
|
|
167 |
|
|
|
168 |
A noter l'option ``-d`` qui mettent les services en tache de fond. |
|
|
169 |
|
|
|
170 |
lancement des services |
|
|
171 |
---------------------- |
|
|
172 |
|
|
|
173 |
:: |
|
|
174 |
|
|
|
175 |
$ docker-compose [-f </path/to/docker-compose.yml>] -p hdalab run SERVICE [COMMAND] [ARGS...] |
|
|
176 |
|
|
|
177 |
Cette commande lance un service. |
|
|
178 |
|
|
|
179 |
Execution d'une commande sur un service lancé |
|
|
180 |
--------------------------------------------- |
|
|
181 |
|
|
|
182 |
:: |
|
|
183 |
|
|
|
184 |
$ docker-compose [-f </path/to/docker-compose.yml>] -p hdalab exec SERVICE COMMAND [ARGS...] |
|
|
185 |
|
|
|
186 |
arrêt des services |
|
|
187 |
------------------ |
|
|
188 |
|
|
|
189 |
:: |
|
|
190 |
|
|
|
191 |
$ docker-compose [-f </path/to/docker-compose.yml>] -p hdalab stop [SERVICE...] |
|
|
192 |
|
|
|
193 |
consulter la sortie des containers |
|
|
194 |
---------------------------------- |
|
|
195 |
|
|
|
196 |
:: |
|
|
197 |
|
|
|
198 |
$ docker-compose [-f </path/to/docker-compose.yml>] -p hdalab logs [-f] [SERVICE...] |
|
|
199 |
|
|
|
200 |
effacement et recréation de la base de donnée vide |
|
|
201 |
-------------------------------------------------- |
|
|
202 |
|
|
|
203 |
Attention, toutes les données de la base seront définitivement |
|
|
204 |
supprimées. |
|
|
205 |
|
|
|
206 |
:: |
|
|
207 |
|
|
|
208 |
$ docker-compose [-f </path/to/docker-compose.yml>] -p hdalab stop hdalab |
|
|
209 |
$ echo "drop database hdalab;\ncreate database hdalab owner iri encoding 'utf-8';" | docker exec -i hdalab_pg_1 psql -U iri postgres |
|
|
210 |
|
|
|
211 |
Accès à la base de donnée |
|
|
212 |
------------------------- |
|
|
213 |
|
|
|
214 |
Le port postgresql 5432 est ouvert sur l'ordinateur hôte. La base |
|
|
215 |
utilisée par l'application est ``hdalab``. L'utilisateur et mot de passe |
|
|
216 |
pour y accéder sont : - utilisateur: ``iri`` - mot de passe: ``iri`` |