finish stack

This commit is contained in:
nemunaire 2017-10-19 03:14:30 +02:00 committed by nemunaire
commit db807385fc
3 changed files with 249 additions and 36 deletions

View file

@ -85,7 +85,7 @@ Voici les notes retrouvées dans les derniers échanges avec le sous-traitant :
</div>
### Stage 0 : Récupérer les images
### 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.
@ -94,56 +94,120 @@ vous baser dessus pour commencer.
* `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.
### Stage 2 : `docker-compose.yml` simple
Pensez à inspecter les conteneurs pour voir les objets Docker qu'ils créent
et/ou exposent.
* admin
* backend
* frontend
* mysql
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 :
```shell
docker pull nemunaire/fic-admin nemunaire/fic-backend nemunaire/fic-frontend
```
### Stage 2 (bis) : `docker-compose.yml` avec autentification
### Pallier 1 : `docker-compose.yml`
* admin
* backend
* frontend
* mysql
* nginx (auth)
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` (ou `mysql`)
* `admin`
* `backend`
* `frontend`
* `nginx` (ou `apache`, ...)
### Stage 3 : `fic-server.yml` sécurisé
#### Astuces
* admin
* backend
* frontend
* mysql
* nginx (auth)
Utilisant `docker secrets` et `docker config`.
Aidez-vous
### Stage 4 : retrouver les `Dockerfile`
### 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 ?!
### Stage 5 : `fic-server.yml` production ready
ssh between back and front et sur deux machines distinctes
#### Astuces
Les différents projets sont organisés au sein d'un
[dépôt monolithique](https://danluu.com/monorepo/). 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 :
```shell
docker image build --file Dockerfile-admin .
```
Les
[*multi-stage builds*](https://docs.docker.com/engine/userguide/eng-image/multistage-build/)
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`](https://docs.docker.com/engine/swarm/secrets/) et les
éléments de configuration qui pourraient être changés au sein de
[`docker config`](https://docs.docker.com/engine/swarm/configs/).
## Modalité de rendu
Un service automatique s'occupe de réceptionner vos rendus, de faire les
vérifications nécessaires et de vous envoyer un accusé de réception (ou de
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é ne sera pas pris en compte.
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](https://www.epitaf.fr/moodle/mod/quiz/view.php?id=33).
## Tarball
@ -151,18 +215,13 @@ envoyé à une autre adresse et/ou non signé ne sera pas pris en compte.
Tous les fichiers identifiés comme étant à rendre pour ce TP sont à
placer dans une tarball (pas d'archive ZIP, RAR, ...).
Les réponses aux questions sont à regrouper dans un fichier `questions.txt` à
placer à la racine de votre rendu.
Voici une arborescence type:
Voici une arborescence type (vous pourriez avoir des fichiers supplémentaires,
cela dépendra de votre avancée dans le projet) :
<div lang="en-US">
```
login_x-TP2/influxdb
login_x-TP2/influxdb/Dockerfile
login_x-TP2/influxdb/influxdb.conf
login_x-TP2/docker-compose.yml
login_x-TP2/mymonitoring.yml
login_x-TP2/tp/docker-compose.yml
login_x-TP2/tp/mymonitoring-stack.yml
login_x-TP2/fic-server
login_x-TP2/fic-server/fic-server.yml
login_x-TP2/fic-server/Dockerfile-admin