Files
dashboard/DOCKER_QUICK_REF.md
Matthias Hochmeister f09748f4a1 inital
2026-02-23 17:08:58 +01:00

7.2 KiB

Docker Quick Reference

Essential Commands

Initial Setup

# 1. Navigate to project
cd /Users/matthias/work/feuerwehr_dashboard

# 2. Validate Docker setup
./docker-validate.sh

# 3. Configure environment
cp .env.example .env
# Edit .env and set:
#   POSTGRES_PASSWORD=your_secure_password
#   JWT_SECRET=your_jwt_secret_min_32_chars

# 4. Test Docker builds (optional)
./docker-test.sh

Start Application

# Build and start all services
docker-compose up -d

# View logs during startup
docker-compose logs -f

# Check service health
docker-compose ps

Access Services

Manage Services

# Stop services (keeps data)
docker-compose stop

# Start stopped services
docker-compose start

# Restart all services
docker-compose restart

# Restart specific service
docker-compose restart backend

# Stop and remove containers (keeps data)
docker-compose down

# Stop, remove containers and volumes (DELETE DATA)
docker-compose down -v

View Logs

# All services
docker-compose logs -f

# Specific service
docker-compose logs -f backend
docker-compose logs -f frontend
docker-compose logs -f postgres

# Last 100 lines
docker-compose logs --tail=100 backend

# Since specific time
docker-compose logs --since 2024-01-01T00:00:00

Check Status

# Service status and health
docker-compose ps

# Container resource usage
docker stats

# Disk usage
docker system df

Database Operations

# Access PostgreSQL CLI
docker-compose exec postgres psql -U prod_user -d feuerwehr_prod

# Create backup
docker-compose exec postgres pg_dump -U prod_user feuerwehr_prod > backup.sql

# Restore backup
cat backup.sql | docker-compose exec -T postgres psql -U prod_user feuerwehr_prod

# View database logs
docker-compose logs -f postgres

Rebuild Services

# Rebuild all images
docker-compose build

# Rebuild without cache
docker-compose build --no-cache

# Rebuild specific service
docker-compose build backend

# Rebuild and restart
docker-compose up -d --build

Execute Commands in Containers

# Backend shell
docker-compose exec backend sh

# Frontend/Nginx shell
docker-compose exec frontend sh

# Run command in backend
docker-compose exec backend node -v
docker-compose exec backend npm list

# View backend environment
docker-compose exec backend env

Troubleshooting

# View full configuration
docker-compose config

# Validate docker-compose.yml
docker-compose config --quiet

# Remove all stopped containers
docker container prune

# Remove unused images
docker image prune

# Remove unused volumes
docker volume prune

# Remove everything (CAUTION!)
docker system prune -a

Development Workflow

# 1. Make code changes in backend/frontend
# 2. Rebuild affected service
docker-compose build backend
# 3. Restart service
docker-compose up -d backend
# 4. Check logs
docker-compose logs -f backend

Health Checks

# Check backend health
curl http://localhost:3000/health

# Check frontend health
curl http://localhost:80/health

# Check all services health
docker-compose ps

Environment Variables

# View service environment
docker-compose exec backend env

# Override environment variable
BACKEND_PORT=4000 docker-compose up -d

# Use different env file
docker-compose --env-file .env.production up -d

Build Individual Images

Backend

cd backend
docker build -t feuerwehr-backend:latest .
docker run -p 3000:3000 \
  -e DATABASE_URL=postgresql://user:pass@postgres:5432/db \
  -e JWT_SECRET=your_secret \
  feuerwehr-backend:latest

Frontend

cd frontend
docker build \
  --build-arg VITE_API_URL=http://localhost:3000 \
  -t feuerwehr-frontend:latest .
docker run -p 80:80 feuerwehr-frontend:latest

Production Deployment

Using Docker Compose

# 1. Set production environment variables
export POSTGRES_PASSWORD="secure_production_password"
export JWT_SECRET="secure_jwt_secret_min_32_chars"
export CORS_ORIGIN="https://yourdomain.com"
export VITE_API_URL="https://api.yourdomain.com"

# 2. Build and start
docker-compose up -d

# 3. Monitor
docker-compose logs -f

Using Container Registry

# Tag images
docker tag feuerwehr-backend:latest registry.example.com/feuerwehr-backend:v1.0.0
docker tag feuerwehr-frontend:latest registry.example.com/feuerwehr-frontend:v1.0.0

# Push to registry
docker push registry.example.com/feuerwehr-backend:v1.0.0
docker push registry.example.com/feuerwehr-frontend:v1.0.0

# Pull on production server
docker pull registry.example.com/feuerwehr-backend:v1.0.0
docker pull registry.example.com/feuerwehr-frontend:v1.0.0

# Run with docker-compose
docker-compose up -d

Monitoring

Real-time Stats

# All containers
docker stats

# Specific container
docker stats feuerwehr_backend_prod

Inspect Containers

# Container details
docker inspect feuerwehr_backend_prod

# Container IP address
docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' feuerwehr_backend_prod

# Container logs location
docker inspect --format='{{.LogPath}}' feuerwehr_backend_prod

Cleanup

Remove Test Images

docker rmi feuerwehr-backend-test:latest
docker rmi feuerwehr-frontend-test:latest

Clean Build Cache

docker builder prune

Remove Unused Resources

# Remove stopped containers
docker container prune -f

# Remove unused images
docker image prune -f

# Remove unused volumes
docker volume prune -f

# Remove unused networks
docker network prune -f

# Remove everything unused
docker system prune -af

Security

Check for Vulnerabilities

# Scan backend image
docker scan feuerwehr-backend:latest

# Scan frontend image
docker scan feuerwehr-frontend:latest

Update Base Images

# Pull latest base images
docker pull node:20-alpine
docker pull nginx:alpine
docker pull postgres:16-alpine

# Rebuild with new base images
docker-compose build --no-cache
docker-compose up -d

Performance Tuning

Resource Limits

Add to docker-compose.yml:

services:
  backend:
    deploy:
      resources:
        limits:
          cpus: '1.0'
          memory: 512M
        reservations:
          cpus: '0.5'
          memory: 256M

Check Resource Usage

docker stats --no-stream

Common Issues

Port Already in Use

# Find process using port
lsof -i :3000

# Kill process
kill -9 <PID>

# Or use different port
BACKEND_PORT=3001 docker-compose up -d

Database Connection Failed

# Check postgres is healthy
docker-compose ps postgres

# View postgres logs
docker-compose logs postgres

# Restart postgres
docker-compose restart postgres

Container Crashes

# View crash logs
docker-compose logs backend

# Inspect container
docker inspect feuerwehr_backend_prod

# Check health
docker inspect --format='{{.State.Health.Status}}' feuerwehr_backend_prod

References