Du brauchst tatsächlich nur einen kleinen Kern, um sichere, wartbare Services zu deployen. Hier die Essenz:
DockerfileAlles andere ist Ausschmückung dieser fünf Begriffe.
Nur diese Instruktionen brauchst du wirklich: FROM, WORKDIR, COPY, RUN, ENV, EXPOSE, CMD/ENTRYPOINT.
FROM python:3.12-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
RUN useradd -m appuser && chown -R appuser /app
USER appuser
EXPOSE 8000
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]
Best Practices, die 90% der Probleme verhindern:
requirements.txt vor COPY . . kopieren → Docker cached den pip-install-Layer, solange sich Dependencies nicht ändern (schnellere Builds):latest in Produktion – immer Version pinnen (python:3.12-slim, nicht python:latest).dockerignore (analog zu .gitignore) – sonst landen .env, .git, venv/ etc. im ImageUSER appuser)docker build -t myservice:1.0 .
docker run -d -p 8080:8000 --name myservice myservice:1.0
docker ps # laufende Container
docker ps -a # alle Container
docker logs -f myservice # Logs live verfolgen
docker exec -it myservice bash # reinschauen/debuggen
docker stop myservice && docker rm myservice
docker images
docker system prune -a # Aufräumen (Speicherplatz)
Das ist wirklich schon der Großteil, den man im Alltag braucht.