Nouvelle mise en place docker #15

Merged
teddy.morel merged 11 commits from dev_docker_v2 into main 2026-02-19 23:07:05 +01:00
Member

Avantage :

  • Plus rapide à lancer
  • On peut modifier le code est testé en directe

Pour tester :

docker login git.pdplibre.org
docker compose up

Se rendre sur https://localhost:8000/docs
Puis, vous pouvez modifier un fichier, ça recharge l'exécution des app. Exemple avec packages/pac0/src/pac0/service/api_gateway/lib/api.py ou packages/pac0/src/pac0/service/annuaire_local/main.py

docker compose down
Avantage : - Plus rapide à lancer - On peut modifier le code est testé en directe Pour tester : ```bash docker login git.pdplibre.org docker compose up ``` Se rendre sur https://localhost:8000/docs Puis, vous pouvez modifier un fichier, ça recharge l'exécution des app. Exemple avec packages/pac0/src/pac0/service/api_gateway/lib/api.py ou packages/pac0/src/pac0/service/annuaire_local/main.py ```bash docker compose down ```

cool !

C'est effectivement plus rapide pour le dev local.

Attention: pour le déploiement d'instances de dev/test en ligne, ça sera moins souple que l'approche initiale:

  • on ne pourra pas déployer une branche sans générer des images pour cette branches ou ... ré-introduire le git clone/switch
  • si on touche au Dockerfile des images, il faudra les distinguer des autres images (versionnage ??)
cool ! C'est effectivement plus *rapide* pour le dev local. Attention: pour le déploiement d'instances de dev/test en ligne, ça sera moins *souple* que l'approche initiale: - on ne pourra pas déployer une branche sans générer des images pour cette branches ou ... ré-introduire le `git clone/switch` - si on touche au Dockerfile des images, il faudra les distinguer des autres images (versionnage ??)
Author
Member
J'ai mi les image docker ici https://git.pdplibre.org/Construction_PA/-/packages
Author
Member

Pour construire et publié les images docker, il faut :

docker compose build 01-api-gateway
docker compose build
docker compose push

Pour info, on build 01-api-gateway avant, car tous les autres en dépend.

Pour construire et publié les images docker, il faut : ```bash docker compose build 01-api-gateway docker compose build docker compose push ``` Pour info, on build 01-api-gateway avant, car tous les autres en dépend.
Author
Member

Est-ce que l'on met le fichier docker-compose.yml à la racine du projet ?

Est-ce que l'on met le fichier docker-compose.yml à la racine du projet ?
Member

J'ai testé sur mon poste mac:

  • Besoin de renommer secret.exemple en secret
  • J'ai du supprimer le cache car il existait et était owné root (docker volume rm docker_uv_cache)
  • Les containers stockage et nats sont natif arm, les autres en amd donc émulé (pas tres grave).
  • La modif de code est bien prise en live

Sinon dans le dashboard SeaweedFS, c'est l'adresse interne du container 172.18.0.3 qui est présentée. Il faut juste remplacer par localhost pour les deux outils actifs (filer et dashboard)

Ça ronronne, Y a plus K :)

J'ai testé sur mon poste mac: - Besoin de renommer secret.exemple en secret - J'ai du supprimer le cache car il existait et était owné root (docker volume rm docker_uv_cache) - Les containers stockage et nats sont natif arm, les autres en amd donc émulé (pas tres grave). - La modif de code est bien prise en live Sinon dans le dashboard SeaweedFS, c'est l'adresse interne du container 172.18.0.3 qui est présentée. Il faut juste remplacer par localhost pour les deux outils actifs (filer et dashboard) Ça ronronne, Y a plus K :)
Author
Member

Pour le fichier d'environnement secret.exemple il faut le copier.
Le fichier secret est ignoré du versionnage et reste personnel à chaque environnement.

@bruno.d2b si tu build les images avec docker compose build est-ce que les images passe en arm ?

Pour le fichier d'environnement `secret.exemple` il faut le copier. Le fichier secret est ignoré du versionnage et reste personnel à chaque environnement. @bruno.d2b si tu build les images avec `docker compose build` est-ce que les images passe en arm ?
Member

Ok pour moi

Ok pour moi
Author
Member

@ha wrote in #15 (comment):

Est-ce que l'on met le fichier docker-compose.yml à la racine du projet ?

Le docker-compose.yml est maintenant à la racine du projet

@ha wrote in https://git.pdplibre.org/Construction_PA/PA_Communautaire/pulls/15#issuecomment-155: > Est-ce que l'on met le fichier docker-compose.yml à la racine du projet ? Le docker-compose.yml est maintenant à la racine du projet

J'ai fait une revue de code, mes remarques sont sous forme de commentaires dans les sources.

Pense aussi à ajouter/modifier une page de doc.

Pour les tests, il faudrait en faire au moins un pour vérifier le lancement et l'arrêt du docker-compose
(je peux essayer)

En résumé, rien de bloquant et j'ai hâte qu'on merge cette branche car j'en ai besoin sur #13

J'ai fait une revue de code, mes remarques sont sous forme de commentaires dans les sources. Pense aussi à ajouter/modifier une page de doc. Pour les tests, il faudrait en faire au moins un pour vérifier le lancement et l'arrêt du docker-compose (je peux essayer) En résumé, rien de bloquant et j'ai hâte qu'on merge cette branche car j'en ai besoin sur #13
Author
Member

@f.piccinali Pourquoi as-tu rajouté un fichier .gitignore dans le répertoire docker ?
Le fichier secret est déjà dans le .gitignore à la racine : https://git.pdplibre.org/Construction_PA/PA_Communautaire/src/branch/dev_docker_v2/.gitignore

@f.piccinali Pourquoi as-tu rajouté un fichier .gitignore dans le répertoire docker ? Le fichier secret est déjà dans le .gitignore à la racine : https://git.pdplibre.org/Construction_PA/PA_Communautaire/src/branch/dev_docker_v2/.gitignore
Author
Member
@philippe.entzmann J'ai mis à jour la doc docker : https://git.pdplibre.org/Construction_PA/PA_Communautaire/src/branch/dev_docker_v2/docs/developpement/Installation_Docker.md Ma proposition de test : https://git.pdplibre.org/Construction_PA/PA_Communautaire/src/branch/dev_docker_v2/docs/developpement/Installation_Docker.md#v%C3%A9rifications Par contre, je ne vois pas tes commentaires.
ha force-pushed dev_docker_v2 from 7ca2751f83 to b87f65573d 2026-02-19 05:45:33 +01:00 Compare
Member

@ha pour le gitignore, Au temps pour moi, je n'avais pas vérifié, j'ai fait vite.

@ha pour le gitignore, Au temps pour moi, je n'avais pas vérifié, j'ai fait vite.
@ha wrote in https://git.pdplibre.org/Construction_PA/PA_Communautaire/pulls/15#issuecomment-329: > @philippe.entzmann J'ai mis à jour la doc docker : https://git.pdplibre.org/Construction_PA/PA_Communautaire/src/branch/dev_docker_v2/docs/developpement/Installation_Docker.md > > Ma proposition de test : https://git.pdplibre.org/Construction_PA/PA_Communautaire/src/branch/dev_docker_v2/docs/developpement/Installation_Docker.md#v%C3%A9rifications > > Par contre, je ne vois pas tes commentaires. Moi je les vois sur l'onglet `Files changed` ce la PR: ![image](/attachments/5895056e-2a29-4cd0-8954-1afcdba42005)
124 KiB
philippe.entzmann left a comment
Member

Mes remarques ne sont pas bloquantes.

C'est bon à fusionner pour moi !

Mes remarques ne sont pas bloquantes. C'est bon à fusionner pour moi !
@ -0,0 +1,36 @@
FROM python:3.13-slim-bookworm
COPY --from=docker.io/astral/uv:latest /uv /uvx /usr/local/bin/

Attention uv bouge encore beaucoup et on risque des problèmes de regressions si on ne fixe pas la version !

Mettre :0.10.3 ou :0.10 (pour avoir les fix)

Attention `uv` bouge encore beaucoup et on risque des problèmes de regressions si on ne fixe pas la version ! Mettre `:0.10.3` ou `:0.10` (pour avoir les fix)
ha marked this conversation as resolved
@ -0,0 +31,4 @@
USER ${USER}
WORKDIR /app

prévoir de faire un uv sync après avoir palcer pyproject.toml pour éviter que chaque service ne télécharge toutes les dépendances à chaque lancement

L'image sera plus grosse mais plus rapide à lancer

Mettre un commentaire en attendant

prévoir de faire un `uv sync` après avoir palcer `pyproject.toml` pour éviter que chaque service ne télécharge toutes les dépendances à chaque lancement L'image sera plus grosse mais plus rapide à lancer Mettre un commentaire en attendant
philippe.entzmann marked this conversation as resolved
@ -0,0 +1,3 @@
FROM git.pdplibre.org/construction_pa/01-api-gateway:dev
CMD ["/usr/local/bin/uv", "run", "faststream", "run", "pac0.service.validation_metier.main:app", "--reload"]

L'option --reload est utile en dev mais en prod il faudra la supprimer.
Voir si on peut choisir au lancement de l'image.
Mettre un commentaire en attendant.

L'option `--reload` est utile en dev mais en prod il faudra la supprimer. Voir si on peut choisir au lancement de l'image. Mettre un commentaire en attendant.
@ -0,0 +1,3 @@
FROM git.pdplibre.org/construction_pa/01-api-gateway:dev
CMD ["/usr/local/bin/uv", "run", "faststream", "run", "pac0.service.conversion_formats.main:app", "--reload"]

Ne peut-on pas passer pac0.service.conversion_formats.main:app en variables d'environnement ?

ça permettrait de réduire le nombre de Dockerfile et d'images docker

Ne peut-on pas passer `pac0.service.conversion_formats.main:app` en variables d'environnement ? ça permettrait de réduire le nombre de Dockerfile et d'images docker
Author
Member

Sinon, on peut créer une seule image et renseigner la commande au niveau de docker compose ?

Sinon, on peut créer une seule image et renseigner la commande au niveau de docker compose ?

oui bonne idée ... à prévoir plus tard

oui bonne idée ... à prévoir plus tard
@ -0,0 +1,3 @@
FROM git.pdplibre.org/construction_pa/01-api-gateway:dev

Prévoir de pouvoir utiliser un numéro de version plutôt que le tag :dev pour les déploiements prod

Mettre un commentaire en attendant.

Prévoir de pouvoir utiliser un numéro de version plutôt que le tag `:dev` pour les déploiements prod Mettre un commentaire en attendant.
@ -0,0 +1,2 @@
NATS_URL=nats://02-esb-central:4222
STOCKAGE_URL=http://10-stockage:8333

Où est utilisé STOCKAGE_URL ?

Où est utilisé STOCKAGE_URL ?
Author
Member

ici :

endpoint_url=os.environ.get("STOCKAGE_URL", "http://localhost:8333/"),

ici : https://git.pdplibre.org/Construction_PA/PA_Communautaire/src/commit/b87f65573dac4be1c07b0d0f10f85178f9cf7379/packages/pac0/tests/test_s3fs.py#L16
philippe.entzmann marked this conversation as resolved
@ -0,0 +1,2 @@
STOCKAGE_KEY=pdplibrekey

Où est utilisé STOCKAGE_KEY ?

Où est utilisé STOCKAGE_KEY ?
Author
Member

Ici :

key=os.environ.get("STOCKAGE_KEY", "pdplibrekey"),

Ici : https://git.pdplibre.org/Construction_PA/PA_Communautaire/src/commit/b87f65573dac4be1c07b0d0f10f85178f9cf7379/packages/pac0/tests/test_s3fs.py#L14
philippe.entzmann marked this conversation as resolved
@ -0,0 +1,2 @@
STOCKAGE_KEY=pdplibrekey
STOCKAGE_SECRET=Sup3rCl3

Où est utilisé STOCKAGE_SECRET ?

Où est utilisé STOCKAGE_SECRET ?
Author
Member

Ici :

secret=os.environ.get("STOCKAGE_SECRET", "Sup3rCl3"),

Ici : https://git.pdplibre.org/Construction_PA/PA_Communautaire/src/commit/b87f65573dac4be1c07b0d0f10f85178f9cf7379/packages/pac0/tests/test_s3fs.py#L15
philippe.entzmann marked this conversation as resolved
teddy.morel requested reviews from teddy.morel and removed review requests for f.piccinali 2026-02-19 23:05:06 +01:00
Owner

validé pour moi aussi

validé pour moi aussi

à discuter de ce qu'on fait des branches des demandes d'ajout fermées (PR)

je propose qu'on les supprime ... une ou deux semaines après la fusion (merge) ... en cas de grosse régression où on pourrait ré-utiliser la même branche

à discuter de ce qu'on fait des branches des demandes d'ajout fermées (PR) je propose qu'on les supprime ... une ou deux semaines après la fusion (merge) ... en cas de grosse régression où on pourrait ré-utiliser la même branche

@teddy.morel : voici un exemple de ce qu'on a discuté hier à propos des fusions/conflits:

Tu as fusionné cette branche qui a modifié la branche main.
Il y a désormais un risque que des demandes d'ajout (PR) en attente soit en conflit.
C'est le cas avec cette demande d'ajout !30 :

image

Cette demande d'ajout ne pourra donc être fusionnée que si les conflits sont résolus

@teddy.morel : voici un exemple de ce qu'on a discuté hier à propos des fusions/conflits: Tu as fusionné cette branche qui a modifié la branche `main`. Il y a désormais un risque que des demandes d'ajout (PR) en attente soit en conflit. C'est le cas avec cette demande d'ajout !30 : ![image](/attachments/051ba4a2-76a5-4b44-ad50-550b4391c708) Cette demande d'ajout ne pourra donc être fusionnée que si les conflits sont résolus
Owner

yes @philippe.entzmann ,
j'ai traité toutes les PR à évaluer, et j'ai fait un rebase pour chaque suite à ce merge.

j'avais fais en ligne de commande d'abord mais j'ai vu plus tard que forgejo proposait des boutons pour le faire. du coup les premières PR on été fermée même si finalement dans le code la PR a été acceptée.

les prochaines validations de PR seront plus fluides maintenant je pense.

ok pour supprimer les branches à minima 2 semaines plus tard.

yes @philippe.entzmann , j'ai traité toutes les PR à évaluer, et j'ai fait un rebase pour chaque suite à ce merge. j'avais fais en ligne de commande d'abord mais j'ai vu plus tard que forgejo proposait des boutons pour le faire. du coup les premières PR on été fermée même si finalement dans le code la PR a été acceptée. les prochaines validations de PR seront plus fluides maintenant je pense. ok pour supprimer les branches à minima 2 semaines plus tard.
Sign in to join this conversation.
No milestone
No project
No assignees
5 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Construction_PA/PA_Communautaire!15
No description provided.