# Écrire un Dockerfile

Source : https://webgune.cloud/oc-oc/docs/docker-dockerfile · Mis à jour le 2026-10-27

# Écrire un Dockerfile

Quelques principes qui gardent vos images légères et vos builds rapides sur Webgune.

## Multi-stage : exemple Node.js

```dockerfile
FROM node:20-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build

FROM node:20-alpine AS runner
WORKDIR /app
ENV NODE_ENV=production
COPY --from=builder /app/dist ./dist
COPY --from=builder /app/node_modules ./node_modules
CMD ["node", "dist/server.js"]
```

Le stage `builder` contient les outils de compilation et le cache npm. Seul le nécessaire est copié dans le stage final, ce qui réduit la taille de l'image livrée.

## Multi-stage : exemple Go

```dockerfile
FROM golang:1.22-alpine AS builder
WORKDIR /app
COPY go.* ./
RUN go mod download
COPY . .
RUN go build -o server .

FROM alpine:latest
COPY --from=builder /app/server /server
CMD ["/server"]
```

## Checklist avant de pousser

- [ ] L'application écoute sur `0.0.0.0:$PORT`, pas sur un port codé en dur.
- [ ] Aucun secret n'est copié dans l'image : tout passe par les [variables d'environnement](/docs/variables-environnement).
- [ ] Un `.dockerignore` exclut `node_modules`, `.git`, `.env`.
- [ ] L'image finale utilise une base légère (`alpine`, `slim`) quand c'est possible.
