deploy: consomme l'image Docker publiée par la CI au lieu d'un build local

Le docker-compose.yml tire désormais git.opytex.org/lafrite/plesna-gerance:latest
et persiste les données dans un volume nommé (plesna-data) plutôt qu'un bind-mount.
make docker fait pull+up ; make docker-build reste disponible pour tester l'image en local.
This commit is contained in:
2026-07-24 18:12:43 +02:00
parent f228783193
commit 8972bcaa06
3 changed files with 30 additions and 15 deletions

View File

@@ -1,4 +1,4 @@
.PHONY: dev_back dev_front dev docker .PHONY: dev_back dev_front dev docker docker-build
# Backend avec auto-reload uvicorn # Backend avec auto-reload uvicorn
dev_back: dev_back:
@@ -12,6 +12,11 @@ dev_front:
dev: dev:
$(MAKE) dev_back & $(MAKE) dev_front & wait $(MAKE) dev_back & $(MAKE) dev_front & wait
# Build et lance via podman-compose # Tire l'image publiee (registre Gitea) et lance via podman-compose
docker: docker:
podman-compose up --build podman-compose pull
podman-compose up -d
# Construit l'image en local (test avant publication)
docker-build:
podman build -f backend.Dockerfile -t plesna-gerance:local .

View File

@@ -37,19 +37,27 @@ Ouvrir **http://localhost:5173** — le proxy Vite redirige `/api` vers le backe
## Production (Docker) ## Production (Docker)
Un **conteneur unique** : l'image builde le frontend Vue puis le fait servir Un **conteneur unique** : l'image embarque le frontend Vue builde, servi par
par le backend FastAPI (API + interface web sur le meme port). Pas de nginx. le backend FastAPI (API + interface web sur le meme port). Pas de nginx.
L'image est **publiee par la CI Gitea** (`.gitea/workflows/docker-publish.yml`)
sur `git.opytex.org/lafrite/plesna-gerance`. Le `docker-compose.yml` la **tire**
directement (pas de build local) :
```bash ```bash
make docker # podman-compose up --build make docker # podman-compose pull && podman-compose up -d
# ou : docker compose up --build # ou : docker compose pull && docker compose up -d
``` ```
Accessible sur **http://localhost:8080**. Accessible sur **http://localhost:8080**.
Les donnees (base SQLite + documents) sont declarees via `PLESNA_DATA_DIR` Les donnees (base SQLite + documents) sont declarees via `PLESNA_DATA_DIR`
(voir `docker-compose.yml`) et persistees dans le volume `./data`, donc (voir `docker-compose.yml`) et persistees dans un volume nomme dedie
conservees entre les redemarrages du conteneur. (`plesna-data`), donc conservees entre les redemarrages et recreations du
conteneur.
> Build local de l'image (test avant publication) : `make docker-build`
> (`podman build -f backend.Dockerfile -t plesna-gerance:local .`).
## Application de bureau (Windows, sans ligne de commande) ## Application de bureau (Windows, sans ligne de commande)

View File

@@ -1,16 +1,18 @@
services: services:
app: app:
build: # Image publiée par la CI Gitea (pas de build local).
context: . image: git.opytex.org/lafrite/plesna-gerance:latest
dockerfile: backend.Dockerfile
ports: ports:
# hôte:conteneur — l'app (API + interface web) écoute sur 8000 # hôte:conteneur — l'app (API + interface web) écoute sur 8000
- "8080:8000" - "8080:8000"
volumes: volumes:
# Persiste base SQLite + documents hors du conteneur. # Volume nommé dédié aux données (base SQLite + documents).
- ./data:/app/data - plesna-data:/app/data
environment: environment:
# Déclare l'emplacement des données ; get_data_dir() en dérive # Le conteneur écrit ses données ici ; get_data_dir() en dérive
# database.sqlite et documents/ (cf. src/plesna_gerance/paths.py). # database.sqlite et documents/ (cf. src/plesna_gerance/paths.py).
- PLESNA_DATA_DIR=/app/data - PLESNA_DATA_DIR=/app/data
restart: unless-stopped restart: unless-stopped
volumes:
plesna-data: