Definiert wie das Container-Image gebaut wird. Enthält das Base-Image, Abhängigkeiten, Arbeitsverzeichnis und den Startbefehl. Bei Go und Java wird ein Multi-stage Build verwendet um das finale Image klein zu halten.
FROM python:3.12-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
CMD ["python", "app.py"]
Definiert den gesamten Service-Stack für die lokale Entwicklung. Enthält Healthchecks, named Volumes, Netzwerke, Ports und Abhängigkeiten zwischen Services. Startet mit einem einzigen Befehl: docker compose up -d.
services:
app:
build: .
ports: ["8080:5000"]
env_file: .env
healthcheck: ...
Enthält alle Umgebungsvariablen mit sinnvollen Standardwerten. Passwörter sind als Platzhalter markiert und müssen vor dem ersten Start angepasst werden. Die Datei wird nie in Git eingecheckt.
DB_HOST=localhost
DB_PORT=5432
DB_NAME=myapp
DB_PASSWORD=CHANGE_ME
SECRET_KEY=CHANGE_ME
Kubernetes-Manifest mit Deployment, Service und optional HorizontalPodAutoscaler. Enthält SecurityContext mit konfigurierten Zero-Trust-Einstellungen, Resource Requests und Limits, sowie Liveness- und Readiness-Probes.
apiVersion: apps/v1
kind: Deployment
spec:
replicas: 2
securityContext:
runAsNonRoot: true
GitHub Actions Pipeline die bei jedem Push auf main ausgeführt wird. Baut das Docker-Image, pusht es in eine Registry und deployed es. Enthält separate Jobs für Build, Test und Deploy mit korrekten Abhängigkeiten.
on: push
jobs:
build:
runs-on: ubuntu-latest
steps:
- docker build ...
GitLab CI/CD Pipeline als Alternative zu GitHub Actions. Gleiche Funktionalität: Build, Test und Deploy in getrennten Stages. Nutzt die eingebaute GitLab Container Registry für das Image-Hosting.
stages:
- build
- test
- deploy
build:
image: docker:latest
Projektdokumentation auf Deutsch. Erklärt was der Service ist, wie man ihn startet, unter welcher URL er erreichbar ist, wie man ihn stoppt und welche Umgebungsvariablen gesetzt werden müssen.
# Projektname
Service starten:
docker compose up -d
URL: http://localhost:8080
Service stoppen:
docker compose down
Eine funktionierende Demo-Applikation mit mindestens zwei Routen: eine Startseite (/) und ein Health-Endpoint (/health). Sofort startbereit, kann direkt als Basis für eigene Projekte verwendet werden.
@app.route("/health")
def health():
return {"status": "ok"}
@app.route("/")
def index(): ...
Servicespezifische Konfigurationsdateien. Bei PHP + Nginx eine fertige FastCGI-Konfiguration, bei Datenbanken ein init.sql mit Beispiel-Schema und Tabellen, bei Webservern eine optimierte Nginx-Konfiguration.
-- init.sql
CREATE TABLE users (
id SERIAL PRIMARY KEY,
email TEXT UNIQUE,
created_at TIMESTAMPTZ
);