# Docker

## Exercices

Vous êtes en charge de l'infrastructure serveur d'une API Python. Malin comme vous êtes, vous utilisez Docker pour gérer cette infrastructure. 

La structure de fichier est comme suit:

```
API/
├─ src/
│  ├─ main.py
├─ Dockerfile
├─ docker-compose.yaml
├─ .gitignore
```

### Exercice 1

Les développeur.euse.s de l'API viennent vous voir en disant qu'iels aimeraient bien changer leur version de Python actuelle (3.7) à la version 3.10.

Quel(s) fichier(s) devez vous éditer afin de satisfaire leur besoin ?

- [ ] main.py
- [ ] Dockerfile
- [ ] docker-compose.yaml
- [ ] .gitignore

### Exercice 2

La nouvelle version de l'API doit pouvoir être testée sur l'infrastructure sans intérferer avec l'API en production. Vous devez donc mettre en place un nouveau container pour l'API de test qui s'accède par un port différent que celui utilisé pour l'API en production. 

Quel(s) fichier(s) éditez vous ?

- [ ] main.py
- [ ] Dockerfile
- [ ] docker-compose.yaml
- [ ] .gitignore
- [ ] Je n'édite aucun fichier et utilise à la place la ligne de commande suivante:
      ...

### Exercice 3

Afin d'éviter de polluer la base de donnée de production avec les tests, vous avez décidé de créer un nouveau container pour la base de donnée. Ce container doit être similaire en tout point à la production avec les exceptions suivantes: 
- Cette nouvelle base de donnée ne doit en aucun cas interférer avec la production.
- Les données qui y sont stockées doivent être détruites entre chaque lancement de test pour assurer leur bon fonctionnement. 
- L'API de test s'y connecte via le port 9876.

Sachant que:
- Il s'agit d'une base de donnée Postgres.
- Les containers sont détruits et recréés entre chaque test.

Quelle combinaison d'action permet de remplir ces conditions ?

- [ ] Changer la version de l'image du container Postgres pour `postgres:latest`
- [ ] Changer le port mapping du container Postgres en `9876:9876`
- [ ] Changer le port mapping du container Postgres en `9876:5432`
- [ ] Changer le volume utilisé par le container Postgres pour `./src/:/var/lib/postgresql/data`
- [ ] Supprimer le volume utilisé par le container Postgres
- [ ] Changer les variables d'environnement du container Postgres
- [ ] Supprimer les variables d'environnement