meldestelle/.junie/guidelines/technology-guides/docker/docker-development.md
2025-09-15 12:49:55 +02:00

5.2 KiB

Docker-Development Workflow


guideline_type: "technology" scope: "docker-development" audience: ["developers", "ai-assistants"] last_updated: "2025-09-15" dependencies: ["docker-overview.md", "docker-architecture.md"] related_files: ["docker-compose.yml", "docker-compose.override.yml", "Makefile"] ai_context: "Entwicklungs-Workflow, Debugging und lokale Entwicklungsumgebung mit Docker"

🛠️ Development-Workflow

Schnellstart-Befehle

# 🚀 Komplettes Development-Setup
make dev-up           # Startet alle Development-Services
make dev-down         # Stoppt alle Services
make dev-logs         # Zeigt Logs aller Services
make dev-restart      # Neustart aller Services

# 🔧 Service-spezifische Befehle
make service-build SERVICE=ping-service    # Service neu bauen
make service-logs SERVICE=ping-service     # Service-Logs anzeigen
make service-restart SERVICE=ping-service  # Service neustarten

🤖 AI-Assistant Hinweis: Für Development verwende die Makefile-Befehle oder direkt docker-compose:

  • Alles starten: make dev-up oder docker-compose up -d
  • Logs ansehen: make dev-logs oder docker-compose logs -f
  • Service debuggen: docker-compose exec <service> sh

Makefile-Beispiel:

# Development commands
.PHONY: dev-up dev-down dev-logs dev-restart

dev-up:
	docker-compose -f docker-compose.yml -f docker-compose.services.yml up -d
	@echo "🚀 Development environment started"
	@echo "📊 Grafana: http://localhost:3000 (admin/admin)"
	@echo "🔍 Prometheus: http://localhost:9090"
	@echo "🚪 API Gateway: http://localhost:8080"

dev-down:
	docker-compose -f docker-compose.yml -f docker-compose.services.yml down

dev-logs:
	docker-compose -f docker-compose.yml -f docker-compose.services.yml logs -f

dev-restart:
	$(MAKE) dev-down
	$(MAKE) dev-up

# Service-specific commands
service-build:
	@test -n "$(SERVICE)" || (echo "❌ SERVICE parameter required"; exit 1)
	docker-compose -f docker-compose.yml -f docker-compose.services.yml build $(SERVICE)

service-logs:
	@test -n "$(SERVICE)" || (echo "❌ SERVICE parameter required"; exit 1)
	docker-compose logs -f $(SERVICE)

service-restart:
	@test -n "$(SERVICE)" || (echo "❌ SERVICE parameter required"; exit 1)
	docker-compose -f docker-compose.yml -f docker-compose.services.yml restart $(SERVICE)

Hot-Reload Development

docker-compose.override.yml für optimierte Entwicklung:

# Development overrides für Hot-Reload
version: '3.8'

services:
  web-client:
    volumes:
      - ./client/web-app/src:/app/src:ro
      - ./client/common-ui/src:/app/common-ui/src:ro
    environment:
      - NODE_ENV=development
    command: npm run dev

  ping-service:
    environment:
      - DEBUG=true
      - SPRING_DEVTOOLS_RESTART_ENABLED=true
    ports:
      - "5005:5005"  # Debug-Port
    volumes:
      - ./temp/ping-service/src:/workspace/src:ro

Debugging von Services

# Service im Debug-Modus starten
docker-compose -f docker-compose.yml up -d ping-service
docker-compose exec ping-service sh

# Logs in Echtzeit verfolgen
docker-compose logs -f ping-service api-gateway

# Health-Check Status prüfen
curl -s http://localhost:8082/actuator/health | jq
curl -s http://localhost:8080/actuator/health | jq

🎯 AI-Assistenten: Development-Schnellreferenz

Häufige Entwicklungsaufgaben

Aufgabe Befehl Beschreibung
Umgebung starten make dev-up Alle Services für Development
Service debuggen docker-compose exec <service> sh Shell im Container
Logs verfolgen docker-compose logs -f <service> Live-Logs anzeigen
Service neu bauen make service-build SERVICE=<name> Einzelnen Service rebuilden
Health-Check curl localhost:<port>/actuator/health Service-Status prüfen

Development-URLs

Debug-Ports

  • Spring-Services: 5005 (Standard Java Debug)
  • Web-App: Hot-Reload über Volume-Mapping
  • Client-Apps: Port 4000 (Web), 5901 (Desktop VNC)

Troubleshooting Development

Container startet nicht

# Container-Status prüfen
docker-compose ps

# Container-Logs anzeigen
docker-compose logs <service-name>

# Container neu starten
docker-compose restart <service-name>

# Image neu bauen
docker-compose build --no-cache <service-name>

Port-Konflikte

# Ports prüfen
netstat -tulpn | grep :<port>

# Service mit anderem Port starten
docker-compose -f docker-compose.yml -f docker-compose.override.yml up -d

Volume-Probleme

# Volumes prüfen
docker volume ls

# Volume-Inhalt anzeigen
docker-compose exec <service> ls -la /path/to/volume

Navigation: