Rework TP2
This commit is contained in:
parent
3b55c0671d
commit
ef5ffaa782
7 changed files with 160 additions and 112 deletions
|
|
@ -2,7 +2,8 @@
|
|||
|
||||
# Retour sur les bonnes pratiques
|
||||
|
||||
http://docs.docker.com/articles/dockerfile_best-practices/
|
||||
Pour chacune des bonnes pratiques ci-dessous, vérifiez que vous les respectez
|
||||
bien, faites les modifications nécessaires.
|
||||
|
||||
## Utilisez le fichier `.dockerignore`
|
||||
|
||||
|
|
@ -105,7 +106,7 @@ Il y a un certain nombre de règles à connaître pour bien utiliser ce mécanis
|
|||
## Concevez des conteneur éphémères
|
||||
|
||||
Les conteneurs que vous générez doivent aussi éphémères que possible : ils
|
||||
devraient pouvoir être arrêtés, détruits et recréés sans nécessité d'étape de
|
||||
devraient pouvoir être arrêtés, détruits et recréés sans nécessiter d'étape de
|
||||
reconfiguration. La configuration devrait se faire au lancement du conteneur ou
|
||||
lors de sa construction.
|
||||
|
||||
|
|
@ -149,32 +150,32 @@ L'entrypoint peut être utilisé de deux manières différentes :
|
|||
après le nom de l'image, corresponde aux arguments attendu par le programme
|
||||
indiqué dans l'entrypoint. Par exemple pour nginx :
|
||||
|
||||
```
|
||||
ENTRYPOINT ["nginx"]
|
||||
CMD ["-g daemon off;"]
|
||||
```
|
||||
```
|
||||
ENTRYPOINT ["nginx"]
|
||||
CMD ["-g daemon off;"]
|
||||
```
|
||||
|
||||
- Vous pouvez aussi utiliser un script qui servira à faire les initialisations
|
||||
ou les configurations nécessaire au bon fonctionnement du conteneur
|
||||
(rappelez-vous, il doit être éphémère !). Par exemple, le `Dockerfile` pour
|
||||
l'image de PostgreSQL possède cet entrypoint :
|
||||
|
||||
```
|
||||
#!/bin/bash
|
||||
set -e
|
||||
```
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
if [ "$1" = 'postgres' ]; then
|
||||
chown -R postgres "$PGDATA"
|
||||
if [ "$1" = 'postgres' ]; then
|
||||
chown -R postgres "$PGDATA"
|
||||
|
||||
if [ -z "$(ls -A "$PGDATA")" ]; then
|
||||
gosu postgres initdb
|
||||
fi
|
||||
if [ -z "$(ls -A "$PGDATA")" ]; then
|
||||
gosu postgres initdb
|
||||
fi
|
||||
|
||||
exec gosu postgres "$@"
|
||||
fi
|
||||
exec gosu postgres "$@"
|
||||
fi
|
||||
|
||||
exec "$@"
|
||||
```
|
||||
exec "$@"
|
||||
```
|
||||
|
||||
|
||||
## `[""]`, `'` et sans `[]`
|
||||
|
|
@ -194,7 +195,7 @@ pouvez pas utiliser les simple quotes.
|
|||
## Volumes
|
||||
|
||||
L'instruction `VOLUME` doit être utilisée pour exposer tous les espaces de
|
||||
stockage
|
||||
stockage de données, configuration, ...
|
||||
|
||||
|
||||
## Réduisez les privilèges
|
||||
|
|
@ -205,6 +206,18 @@ réclame pas de privilège particulier.
|
|||
Il vous faudra sans doute créer l'utilisateur et son groupe dans le Dockerfile.
|
||||
|
||||
|
||||
## Profitez du système de liaison et de résolution de nom
|
||||
|
||||
Dès lors que vous effectuez un lien avec un autre conteneur, son nom (ou son
|
||||
alias) est ajouté au fichier `/etc/hosts`. Cela signifie que lorsqu'un nom de
|
||||
domaine correspondant au nom du conteneur (ou son alias) sera recherché, l'IP
|
||||
sera bien celle du conteneur. Lorsque vous configurez un conteneur, utilisez de
|
||||
préférence un nom plutôt qu'une IP, qui changera à coup sûr.
|
||||
|
||||
Au moment du `docker run`, vous pouvez préciser d'autres noms d'ĥôtes
|
||||
particuliers en utilisant l'option `--add-host`.
|
||||
|
||||
|
||||
## Exécutez un seul processus par conteneur
|
||||
|
||||
Dans la majorité des cas, vous ne devriez jamais lancer plus d'un seul
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue