-Aggiunte github actions per la compilazione dei container e l'esposizione
6.8 KiB
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:
- Vai su GitHub Repository → Packages
- Seleziona il package
data-coupler - Settings → Change visibility → Public
Una volta pubblico:
# 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:
# 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
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
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
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
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:
docker-compose up -d
🔧 Configurazione Avanzata
Variabili d'Ambiente
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.
# 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)
# 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:
- 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:
- Vai su:
https://github.com/AlessioDalsi/Data-Coupler/packages - Seleziona il package
data-coupler - Package settings → Change visibility → Public
- Conferma il cambio di visibilità
⚠️ Attenzione: Un container pubblico può essere scaricato da chiunque.
📊 Monitoraggio e Log
Visualizzazione Log
# Log in tempo reale
docker logs -f data-coupler
# Ultimi 100 log
docker logs --tail 100 data-coupler
Health Check
# Verifica lo stato del container
docker ps --filter name=data-coupler
# Test health endpoint
curl http://localhost:7550/health
Statistiche Risorse
# Utilizzo risorse container
docker stats data-coupler
🛠️ Build Locale
Se vuoi buildare le immagini localmente:
Linux
docker build -t data-coupler:local -f Dockerfile .
Windows
docker build -t data-coupler:local-windows -f Dockerfile.windows .
🔄 Aggiornamento Container
# 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
# 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
# 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
# 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