-Aggiunta configurazione tramite dockerfile per windows e linux
-Aggiunte github actions per la compilazione dei container e l'esposizione
This commit is contained in:
@@ -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
|
||||
Reference in New Issue
Block a user