-Aggiunta configurazione tramite dockerfile per windows e linux

-Aggiunte github actions per la compilazione dei container e l'esposizione
This commit is contained in:
Alessio Dal Santo
2026-01-16 14:16:15 +01:00
parent 3465d43b08
commit 23c2788fcf
15 changed files with 2879 additions and 4 deletions
+301
View File
@@ -0,0 +1,301 @@
# 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