# Projekt Setup für Netcup (nutzt deine docker-compose.yml)

## Projektstruktur

Das Deployment nutzt deine bestehende Docker-Konfiguration:

```
dein-projekt/                  # Hauptordner
├── ansible/                  # Hier sind wir jetzt
│   └── netcup-simple-deploy/
├── docker-compose.yml        # ← DEINE Compose-Datei (wird verwendet!)
├── docker/                   # Docker-Konfiguration
│   ├── Dockerfile            
│   └── docker-compose.yml    # ← Alternative hier
├── src/                      # PHP Framework/Library Dateien
├── public/                   # Web-Root
└── ...
```

## Was das Deployment macht:

✅ **Nutzt deine bestehende docker-compose.yml**
✅ **Startet ALLE deine Services** (DB, Redis, etc.)
✅ **Überträgt komplettes Projekt**
✅ **Nginx als Reverse Proxy** für SSL

## Quick Setup

### 1. Konfiguration
```bash
cd ansible/netcup-simple-deploy
vim inventory/hosts.yml
```

**Wichtig ändern:**
```yaml
ansible_host: DEINE-NETCUP-IP
domain: "deine-domain.com"
app_port: 8080                 # Port deiner App aus docker-compose.yml
```

### 2. Port prüfen
Schaue in deine `docker-compose.yml` welchen Port deine App exponiertrt:
```yaml
services:
  myapp:
    ports:
      - "8080:80"  # ← Dann ist app_port: 8080
```

### 3. Deployment
```bash
make deploy
```

## Beispiel docker-compose.yml Strukturen

### Einfache PHP App
```yaml
version: '3.8'
services:
  web:
    build: .
    ports:
      - "8080:80"
    volumes:
      - ./src:/var/www/src
      - ./public:/var/www/html
```

### Mit Datenbank
```yaml
version: '3.8'
services:
  web:
    build: .
    ports:
      - "8080:80"
    depends_on:
      - db
    environment:
      - DATABASE_URL=mysql://user:pass@db:3306/myapp
      
  db:
    image: mysql:8.0
    environment:
      - MYSQL_ROOT_PASSWORD=secret
      - MYSQL_DATABASE=myapp
    volumes:
      - db_data:/var/lib/mysql

volumes:
  db_data:
```

### Mit Redis + Database
```yaml
version: '3.8'
services:
  web:
    build: .
    ports:
      - "8080:80"
    depends_on:
      - db
      - redis
      
  db:
    image: postgres:15
    environment:
      - POSTGRES_DB=myapp
      - POSTGRES_USER=user
      - POSTGRES_PASSWORD=secret
    volumes:
      - postgres_data:/var/lib/postgresql/data
      
  redis:
    image: redis:7-alpine
    volumes:
      - redis_data:/data

volumes:
  postgres_data:
  redis_data:
```

## Nach dem Deployment

**Alle Services verwalten:**
```bash
make services        # Zeige alle Services
make logs-service    # Logs für bestimmten Service
make status          # Status aller Container
make shell           # In Container einsteigen
```

**Updates:**
```bash
# Nach Änderungen an Code oder docker-compose.yml
make deploy

# Nur Container neu bauen
make rebuild
```

**Monitoring:**
```bash
make logs            # Alle Logs
make tail-logs       # Live logs
make show-env        # Environment variables
```

## Vorteile dieser Lösung

✅ **Deine bestehende Konfiguration** wird verwendet
✅ **Alle Services** (DB, Redis, etc.) funktionieren
✅ **Keine Code-Änderungen** nötig
✅ **SSL-Termination** durch nginx
✅ **Einfache Updates** mit make deploy

Das Deployment ist jetzt vollständig auf deine bestehende Docker-Infrastruktur ausgerichtet! 🎉
