feat(docker): aggiungi flusso di sviluppo con hot reload via compose
Dockerfile diventa multi-stage con target `dev` (Vite + bind-mount) oltre a `builder`/`runtime`; docker-compose.dev.yml lo usa per un ambiente di sviluppo containerizzato equivalente a `npm run dev`, senza toccare il compose di produzione (che resta pull-only dal registry). Documentato in README e CLAUDE.md.
This commit is contained in:
@@ -16,6 +16,7 @@ Segnapunti digitale in tempo reale per partite di pallavolo. Un server centrale
|
||||
- [Funzionalità](#funzionalità)
|
||||
- [Deploy con Docker](#deploy-con-docker)
|
||||
- [Sviluppo](#sviluppo)
|
||||
- [Sviluppo con Docker](#sviluppo-con-docker)
|
||||
- [Test](#test)
|
||||
|
||||
---
|
||||
@@ -186,6 +187,8 @@ docker compose pull && docker compose up -d
|
||||
|
||||
### Build e pubblicazione immagine
|
||||
|
||||
Il `Dockerfile` è multi-stage (`deps` → `dev` / `builder` → `runtime`); senza specificare `--target`, il build produce l'ultimo stage (`runtime`), l'immagine di produzione:
|
||||
|
||||
```bash
|
||||
docker build \
|
||||
-t santantonio.sytes.net/attilio/segnapunti:2.0.0 \
|
||||
@@ -195,6 +198,13 @@ docker push santantonio.sytes.net/attilio/segnapunti:2.0.0
|
||||
docker push santantonio.sytes.net/attilio/segnapunti:latest
|
||||
```
|
||||
|
||||
Per testare in locale l'immagine di produzione senza pubblicarla:
|
||||
|
||||
```bash
|
||||
docker build -t segnapunti:local .
|
||||
docker run --rm -p 3000:3000 -v ./.segnapunti:/app/.segnapunti segnapunti:local
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Sviluppo
|
||||
@@ -230,6 +240,29 @@ Lo stato viene salvato in `.segnapunti/state.json` anche in modalità dev.
|
||||
|
||||
---
|
||||
|
||||
## Sviluppo con Docker
|
||||
|
||||
In alternativa a Node.js installato in locale, `docker-compose.dev.yml` builda il target `dev` del `Dockerfile` e monta il codice sorgente nel container, con hot reload identico a `npm run dev`:
|
||||
|
||||
```bash
|
||||
docker compose -f docker-compose.dev.yml up --build
|
||||
```
|
||||
|
||||
| URL | Interfaccia |
|
||||
|---|---|
|
||||
| `http://localhost:5173/display` | Display |
|
||||
| `http://localhost:5173/controller` | Controller |
|
||||
|
||||
Le modifiche ai file sorgente sull'host si riflettono subito nel container (bind-mount); `node_modules` resta invece un volume anonimo del container, per non farsi sovrascrivere dal bind-mount e per evitare incompatibilità tra i binari nativi installati sull'host e quelli richiesti dal container (es. host ARM / container `node:20-alpine` su x86).
|
||||
|
||||
Per fermare e rimuovere il container:
|
||||
|
||||
```bash
|
||||
docker compose -f docker-compose.dev.yml down
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Test
|
||||
|
||||
| Comando | Descrizione |
|
||||
|
||||
Reference in New Issue
Block a user