8.4 KiB
\newpage
Rendu
Projet
M. Dessi, votre DSI, vient vous voir, paniqué : une grande conférence se tient dans deux semaines, l'entreprise avait été mandatée de longue date pour réaliser une interface d'animation pour un des événements majeurs et cela fait un mois maintenant qu'il est sans nouvelle du sous-traitant à qui cette tâche avait été confiée. On ne peut pas attendre davantage, vous êtes mandaté pour terminer le projet qui a été laissé en plan par le sous-traitant.
Heureusement pour vous, il semblerait que tout le code de l'interface ait été envoyé sur un dépôt git de l'entreprise. Il semblerait qu'il ne reste plus qu'à déployer la solution.
Voici les notes retrouvées dans les derniers échanges avec le sous-traitant :
Pallier 0 : Récupérer les images
Le sous-traitant a laissé des images Docker sur le Docker Hub, vous pourrez vous baser dessus pour commencer.
nemunaire/fic-admin
nemunaire/fic-backend
nemunaire/fic-frontend
Faites-vous la main sur ces trois images : lancez les ; l'ordre suggéré par les notes du prestataire devraient vous aider.
Pensez à inspecter les conteneurs pour voir les objets Docker qu'ils créent et/ou exposent.
Vous devriez pouvoir lancer docker container run nemunaire/fic-IMAGE --help
sur les images.
Durant la durée du projet, les images seront peut-être amenés à être mis à jour, si vous vous trouvez bloqué, commencez par vérifier que vous avez bien la dernière version disponible de l'image :
docker pull nemunaire/fic-admin nemunaire/fic-backend nemunaire/fic-frontend
Pallier 1 : docker-compose.yml
Maintenant que vous arrivez à lancer les images, rendez cela reproductible en
inscrivant tout ça dans un fichier YAML, compréhensible par docker-compose
!
Vous devriez avoir ces services :
mariadb
(oumysql
)admin
backend
frontend
nginx
(ouapache
, ...)
Astuces
Aidez-vous
Pallier 2 : retrouver les Dockerfile
Maintenant que vous êtes en mesure de lancer le service, il serait temps de ne plus dépendre d'une image que l'on ne peut plus modifier facilement.
Pour ce palier, vous allez devoir réécrire les trois fichiers Dockerfile
,
pour chacun des service :
- admin
- backend
- frontend
Arriverez-vous à générer des images plus propres que celles du prestataire disparu ?!
Astuces
Les différents projets sont organisés au sein d'un
dépôt monolithique. Les projets ont des
dépendances entre les dossiers qui se trouvent à la racine (qui sont
l'équivalent de bibliothèques). Vous allez sans doute vouloir placer les trois
Dockerfile
à la racine pour simplifier les étapes de construction des images :
docker image build --file Dockerfile-admin .
Les multi-stage builds vous seront d'une grande aide.
Si vous n'avez pas le choix d'utiliser une vieille version de Docker qui ne
supporte pas la syntaxe au sein d'un seul fichier, vous pouvez ajouter des
scripts et autant de Dockerfile
que nécessaire à la tarball (mais vous
devriez considérer l'option de mettre à jour votre Docker).
Pallier 3 : fic-server.yml
prêt pour le déploiement
À présent, faites les éventuelles adaptations nécessaires pour que votre
fichier docker-compose.yml
puisse s'exécuter au sein d'un cluster de
plusieurs machines. Via docker stack deploy
.
Pallier 4 : fic-server.yml
prêt pour la production
Comme indiqué dans les notes du prestataire, en production, le frontend se trouve sur une machine distincte du backend.
À vous de trouvez une solution élégante pour gérer la synchronisation des données ! Il est fort probable que vous ayez à ajouter des services à votre fichier YAML.
Pallier 5 (bonus) : fic-server.yml
sécurisé
Vous avez indiqués des mots de passes bidons dans votre YAML ? Rangez les
informations sensibles au sein de
docker secret
et les
éléments de configuration qui pourraient être changés au sein de
docker config
.
Modalité de rendu
Un service automatique s'occupe de réceptionner vos rendus, de faire des vérifications élémentaires et de vous envoyer un accusé de réception (ou de rejet).
Ce service écoute sur l'adresse virli@nemunai.re, c'est donc à cette adresse et exclusivement à celle-ci que vous devez envoyer vos rendus. Tout rendu envoyé à une autre adresse et/ou non signé et/ou reçu après la correction ne sera pas pris en compte.
Par ailleurs, n'oubliez pas de répondre à l'évaluation du cours.
Tarball
Tous les fichiers identifiés comme étant à rendre pour ce TP sont à placer dans une tarball (pas d'archive ZIP, RAR, ...).
Voici une arborescence type (vous pourriez avoir des fichiers supplémentaires, cela dépendra de votre avancée dans le projet) :