Zurück zu KI
DevOps Profi

Docker & Deployments mit KI

Container bauen, über mehrere VMs deployen und mit Cloudflare Tunnels sicher veröffentlichen.

Warum Docker?

Docker isoliert Anwendungen in Containern: Deine App läuft überall gleich — egal ob auf dem Entwicklungsrechner oder dem Produktiv-Server. Keine „bei mir funktioniert es aber“-Probleme mehr.

Dockerfile mit Claude Code erstellen

# Beispiel: Node.js-App
FROM node:22-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY . .
EXPOSE 3000
CMD ["node", "server/index.js"]

Docker Compose für App + Datenbank

# docker-compose.yml
services:
  app:
    build: .
    ports:
      - "127.0.0.1:3000:3000"
    environment:
      - DATABASE_URL=postgresql://user:pass@db:5432/myapp
    depends_on:
      - db
    restart: unless-stopped

  db:
    image: postgres:17-alpine
    ports:
      - "127.0.0.1:5433:5432"
    environment:
      - POSTGRES_USER=user
      - POSTGRES_PASSWORD=pass
      - POSTGRES_DB=myapp
    volumes:
      - pgdata:/var/lib/postgresql/data
    restart: unless-stopped

volumes:
  pgdata:

Multi-VM Deployment

Wenn dein Dev-Server und Prod-Server verschiedene VMs sind:

# 1. Auf dem Dev-Server bauen
docker build -t meine-app:latest .
docker save meine-app:latest | gzip > meine-app.tar.gz

# 2. Zum Prod-Server transferieren
scp meine-app.tar.gz user@prod-server:/tmp/

# 3. Auf dem Prod-Server laden und starten
ssh user@prod-server
docker load < /tmp/meine-app.tar.gz
cd /opt/meine-app
docker compose up -d

Cloudflare Tunnel für sichere Exposition

Statt Ports direkt zu öffnen, nutze einen Cloudflare Tunnel. Dein Server ist nie direkt aus dem Internet erreichbar.

# Cloudflare Tunnel installieren
curl -L --output cloudflared.deb \
  https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb
sudo dpkg -i cloudflared.deb

# Tunnel erstellen und konfigurieren
cloudflared tunnel login
cloudflared tunnel create mein-tunnel
cloudflared tunnel route dns mein-tunnel app.meine-domain.de

# Als Systemdienst installieren
sudo cloudflared service install

Container-Monitoring

# Health Check per Skript
#!/bin/bash
CONTAINER="meine-app"
if ! docker ps --format '{{.Names}}' | grep -q "^${CONTAINER}$"; then
  echo "$CONTAINER ist gestoppt! Starte neu..."
  cd /opt/meine-app && docker compose up -d
  # Telegram-Alert senden
fi

Verwende immer 127.0.0.1 statt 0.0.0.0 für Port-Bindings. So ist der Dienst nur lokal erreichbar — der Cloudflare Tunnel leitet den Traffic sicher weiter.