feat: docs
This commit is contained in:
@@ -0,0 +1,70 @@
|
||||
---
|
||||
title: Images Docker
|
||||
description: Utiliser une image existante ou construire une image adaptée à son application.
|
||||
---
|
||||
|
||||
## Une image est un template en lecture seule
|
||||
|
||||
Une image regroupe le userspace, l'application et sa configuration de démarrage. Elle est figée : on ne la modifie pas après sa construction, on l'instancie sous la forme d'un conteneur.
|
||||
|
||||
Une même image peut servir à lancer plusieurs conteneurs.
|
||||
|
||||
## Des couches partagées
|
||||
|
||||
Une image est composée de couches, ou *layers*. Chaque instruction de construction ajoute une couche. Docker peut mettre ces couches en cache et les partager entre plusieurs images.
|
||||
|
||||
Si dix images utilisent `node:25-slim` comme base, cette couche n'est téléchargée et stockée qu'une seule fois.
|
||||
|
||||
## Utiliser une image existante
|
||||
|
||||
Docker Hub et d'autres registries, comme GHCR, proposent des images prêtes à l'emploi. Pour un service standard, il suffit généralement d'utiliser l'image officielle :
|
||||
|
||||
```yaml
|
||||
services:
|
||||
postgres:
|
||||
image: postgres:16-alpine
|
||||
|
||||
minio:
|
||||
image: minio/minio:latest
|
||||
|
||||
mailpit:
|
||||
image: axllent/mailpit:latest
|
||||
|
||||
nginx:
|
||||
image: nginx:1.27-alpine
|
||||
```
|
||||
|
||||
Le suffixe après les deux-points est le **tag**. Par exemple, `postgres:16-alpine` désigne PostgreSQL 16 sur une base Alpine Linux minimale.
|
||||
|
||||
<Callout title="Épingler les versions" type="warning">
|
||||
Préfère un tag précis comme 16-alpine ou 1.27-alpine à latest. Le résultat sera plus prévisible et les builds plus reproductibles.
|
||||
</Callout>
|
||||
|
||||
## Construire une image custom
|
||||
|
||||
Le code de ton frontend ou de ton backend est unique. Il faut donc écrire un Dockerfile qui part d'une image existante et ajoute l'application :
|
||||
|
||||
```dockerfile
|
||||
FROM node:25-slim
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
COPY package.json package-lock.json ./
|
||||
RUN npm ci
|
||||
|
||||
COPY . .
|
||||
RUN npm run build
|
||||
|
||||
CMD ["node", "dist/src/main"]
|
||||
```
|
||||
|
||||
L'instruction `FROM` exprime l'héritage : l'image de l'application réutilise `node:25-slim`, puis ajoute ses propres couches.
|
||||
|
||||
## Choisir entre image et build
|
||||
|
||||
| Besoin | Choix |
|
||||
| --- | --- |
|
||||
| Base de données ou proxy standard | Image officielle via `image:` |
|
||||
| Application développée par l'équipe | Image custom via un Dockerfile |
|
||||
| Outil tiers avec configuration légère | Image officielle + variables et volumes |
|
||||
| Runtime spécifique et code métier | Dockerfile custom |
|
||||
Reference in New Issue
Block a user