# Data-Coupler Docker Deployment Guide ## πŸ“¦ Container Images Le immagini Docker sono disponibili su GitHub Container Registry: ### Immagini Disponibili #### Branch Main (Produzione) - **Linux**: `ghcr.io/alessiodalsi/data-coupler:latest` - **Windows**: `ghcr.io/alessiodalsi/data-coupler:latest-windows` - **Multi-Platform**: `ghcr.io/alessiodalsi/data-coupler:latest` (seleziona automaticamente) #### Branch Dev (Sviluppo) - **Linux**: `ghcr.io/alessiodalsi/data-coupler:dev-latest` - **Windows**: `ghcr.io/alessiodalsi/data-coupler:dev-latest-windows` #### Branch Staging - **Linux**: `ghcr.io/alessiodalsi/data-coupler:staging-latest` - **Windows**: `ghcr.io/alessiodalsi/data-coupler:staging-latest-windows` ## πŸš€ Quick Start ### Pull dell'Immagine (Pubblico - senza autenticazione) Per consentire il pull senza credenziali, le immagini devono essere configurate come pubbliche sul repository GitHub. **Per rendere il container pubblico:** 1. Vai su GitHub Repository β†’ Packages 2. Seleziona il package `data-coupler` 3. Settings β†’ Change visibility β†’ Public Una volta pubblico: ```bash # Pull immagine Linux docker pull ghcr.io/alessiodalsi/data-coupler:latest # Pull immagine Windows docker pull ghcr.io/alessiodalsi/data-coupler:latest-windows ``` ### Pull con Autenticazione (Container Privato) Se il container rimane privato ma vuoi consentire pull specifici: ```bash # 1. Crea un Personal Access Token (PAT) su GitHub # Settings β†’ Developer settings β†’ Personal access tokens β†’ Tokens (classic) # Seleziona scope: read:packages # 2. Login al registry echo "YOUR_GITHUB_TOKEN" | docker login ghcr.io -u YOUR_GITHUB_USERNAME --password-stdin # 3. Pull dell'immagine docker pull ghcr.io/alessiodalsi/data-coupler:latest ``` ### Esecuzione del Container #### Linux ```bash docker run -d \ --name data-coupler \ -p 7550:7550 \ -v /var/lib/data-coupler:/var/lib/Data_Coupler \ --restart unless-stopped \ ghcr.io/alessiodalsi/data-coupler:latest ``` #### Windows ```powershell docker run -d ` --name data-coupler ` -p 7550:7550 ` -v C:\ProgramData\Data_Coupler:C:\ProgramData\Data_Coupler ` --restart unless-stopped ` ghcr.io/alessiodalsi/data-coupler:latest-windows ``` ## 🐳 Docker Compose ### Linux ```yaml version: '3.8' services: data-coupler: image: ghcr.io/alessiodalsi/data-coupler:latest container_name: data-coupler ports: - "7550:7550" volumes: - data-coupler-data:/var/lib/Data_Coupler environment: - ASPNETCORE_ENVIRONMENT=Production - ASPNETCORE_URLS=http://+:7550 restart: unless-stopped healthcheck: test: ["CMD", "curl", "-f", "http://localhost:7550/health"] interval: 30s timeout: 10s retries: 3 start_period: 60s volumes: data-coupler-data: driver: local ``` ### Windows ```yaml version: '3.8' services: data-coupler: image: ghcr.io/alessiodalsi/data-coupler:latest-windows container_name: data-coupler ports: - "7550:7550" volumes: - C:\ProgramData\Data_Coupler:C:\ProgramData\Data_Coupler environment: - ASPNETCORE_ENVIRONMENT=Production - ASPNETCORE_URLS=http://+:7550 restart: unless-stopped ``` Avvio: ```bash docker-compose up -d ``` ## πŸ”§ Configurazione Avanzata ### Variabili d'Ambiente ```bash docker run -d \ --name data-coupler \ -p 7550:7550 \ -e ASPNETCORE_ENVIRONMENT=Production \ -e ASPNETCORE_URLS=http://+:7550 \ -e Logging__LogLevel__Default=Information \ -v /var/lib/data-coupler:/var/lib/Data_Coupler \ ghcr.io/alessiodalsi/data-coupler:latest ``` ### Volumi Persistenti I dati del database e le configurazioni vengono salvati in: - **Linux**: `/var/lib/Data_Coupler/credentials.db` - **Windows**: `C:\ProgramData\Data_Coupler\credentials.db` ### Port Mapping L'applicazione ascolta sulla porta **7550** per impostazione predefinita. ```bash # Cambio porta (es. 8080) docker run -d -p 8080:7550 ghcr.io/alessiodalsi/data-coupler:latest ``` ## πŸ”’ Gestione Accessi Container Privato ### Opzione 1: Token Personale (PAT) ```bash # Salva il token in un file echo "YOUR_GITHUB_TOKEN" > ~/.github-token # Login con il token cat ~/.github-token | docker login ghcr.io -u YOUR_USERNAME --password-stdin ``` ### Opzione 2: GitHub Actions Deploy Key Per deploy automatici da CI/CD, usa il `GITHUB_TOKEN` fornito automaticamente: ```yaml - name: Login to GitHub Container Registry uses: docker/login-action@v3 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} ``` ### Opzione 3: Container Pubblico (Nessuna Autenticazione) Per consentire pull senza credenziali: 1. Vai su: `https://github.com/AlessioDalsi/Data-Coupler/packages` 2. Seleziona il package `data-coupler` 3. **Package settings** β†’ **Change visibility** β†’ **Public** 4. Conferma il cambio di visibilitΓ  ⚠️ **Attenzione**: Un container pubblico puΓ² essere scaricato da chiunque. ## πŸ“Š Monitoraggio e Log ### Visualizzazione Log ```bash # Log in tempo reale docker logs -f data-coupler # Ultimi 100 log docker logs --tail 100 data-coupler ``` ### Health Check ```bash # Verifica lo stato del container docker ps --filter name=data-coupler # Test health endpoint curl http://localhost:7550/health ``` ### Statistiche Risorse ```bash # Utilizzo risorse container docker stats data-coupler ``` ## πŸ› οΈ Build Locale Se vuoi buildare le immagini localmente: ### Linux ```bash docker build -t data-coupler:local -f Dockerfile . ``` ### Windows ```bash docker build -t data-coupler:local-windows -f Dockerfile.windows . ``` ## πŸ”„ Aggiornamento Container ```bash # 1. Pull ultima versione docker pull ghcr.io/alessiodalsi/data-coupler:latest # 2. Stop container corrente docker stop data-coupler # 3. Rimuovi container (mantiene i volumi) docker rm data-coupler # 4. Avvia nuovo container docker run -d \ --name data-coupler \ -p 7550:7550 \ -v /var/lib/data-coupler:/var/lib/Data_Coupler \ --restart unless-stopped \ ghcr.io/alessiodalsi/data-coupler:latest ``` ## πŸ“‹ Troubleshooting ### Container non si avvia ```bash # Controlla i log docker logs data-coupler # Verifica permessi directory ls -la /var/lib/data-coupler # Linux dir C:\ProgramData\Data_Coupler # Windows ``` ### Porta giΓ  in uso ```bash # Verifica processi sulla porta 7550 netstat -tuln | grep 7550 # Linux netstat -ano | findstr :7550 # Windows # Usa porta alternativa docker run -d -p 8080:7550 ghcr.io/alessiodalsi/data-coupler:latest ``` ### Problemi di connessione database ```bash # Verifica volumi docker volume ls docker volume inspect data-coupler-data # Accedi al container per debug docker exec -it data-coupler bash # Linux docker exec -it data-coupler powershell # Windows ``` ## 🌐 Accesso all'Applicazione Dopo l'avvio del container, accedi all'applicazione: ``` http://localhost:7550 ``` --- **Versione**: 1.0 **Framework**: .NET 9.0 **Maintainer**: Alessio Dalsanto