Files
devops-guide/docs/containerization.md
Jev Kuznetsov 846eca59d2 add knowledge
2026-04-23 12:06:00 +02:00

1.2 KiB

Containerization

Package your app and its environment together so it runs identically on every machine — dev, CI, and production.

Tools

Docker is the standard. Everything else (Podman, containerd) is compatible with Docker images.

Key Concepts

  • Image — a snapshot of your app + OS + dependencies
  • Container — a running instance of an image
  • Dockerfile — the recipe for building an image
  • Local CI pattern — run your test suite inside a container before pushing; catches environment drift before it reaches remote CI

Minimal Dockerfile (Python)

FROM python:3.12-slim

WORKDIR /app
COPY pyproject.toml .
RUN pip install uv && uv pip install --system -e ".[dev]"

COPY . .
CMD ["python", "-m", "mypackage"]

Quickstart

# build
docker build -t myapp .

# run
docker run --rm myapp

# local CI — run tests inside the container
docker run --rm myapp pytest

# interactive shell for debugging
docker run --rm -it myapp bash

Tips

  • Use .dockerignore to exclude __pycache__, .git, .venv, *.pyc
  • Pin the base image tag (python:3.12-slim, not python:latest)
  • Layer ordering matters: copy dependency files before source so the install layer is cached