23c2788fcf
-Aggiunte github actions per la compilazione dei container e l'esposizione
302 lines
6.8 KiB
Markdown
302 lines
6.8 KiB
Markdown
# 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
|