Hacky & Tipy
Docker: 10 chyb, co dělá každý začátečník
Docker je jednoduchý na naučení, ale těžký na zvládnutí. Tady je 10 chyb, které dělá skoro každý.
1. Používání :latest tagu
# ❌ FROM node:latest
# ✅ FROM node:20.11-alpine
# ✅ FROM node:20.11-alpine
2. Running as root
RUN addgroup -S app && adduser -S app -G app
USER app
USER app
3. Obří image
Použijte multi-stage builds a Alpine:
FROM node:20 AS build
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
FROM node:20-alpine
COPY --from=build /app/dist ./dist
CMD ["node", "dist/index.js"]
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
FROM node:20-alpine
COPY --from=build /app/dist ./dist
CMD ["node", "dist/index.js"]
4. Špatné pořadí vrstev (cache)
# ✅ Dependencies first, pak kód
COPY package*.json ./
RUN npm install
COPY . .
COPY package*.json ./
RUN npm install
COPY . .
5. Chybějící .dockerignore
node_modules
.git
.env
Dockerfile
.git
.env
Dockerfile
6. Secrets v image
Nikdy nedávejte hesla do Dockerfile. Použijte runtime env nebo Docker secrets.
7. Víc procesů v jednom kontejneru
Jeden kontejner = jeden proces. Nedělejte z kontejneru VM.
8. Žádný health check
HEALTHCHECK --interval=30s --timeout=3s CMD curl -f http://localhost:3000/health || exit 1
9. Žádné volumes pro data
docker run -v pgdata:/var/lib/postgresql/data postgres:16
10. Žádné resource limity
docker run --memory=512m --cpus=1.0 myapp
Shrnutí
Respektujte best practices od začátku. Opravit špatné návyky je těžší než se je nenaučit.