teymour/attestation-covid19

Docker Conteneur sur un Registry

Closed this issue · 8 comments

Serait-il possible de mettre le Conteneur Docker dans un Docker registry (Docker Hub) pour lancer la commande uniquement avec la commande docker pull sans avoir à builder le Docker Container ?

Je peux le pousser sur mon Docker Hub si vous voulez ?

Je ne connais pas bien Docker et pas Docker Hub. Ce projet est un logiciel libre, plus il a d'utilisateur, mieux c'est (à condition que la licence soit respectée ;) ). Vous êtes donc le bienvenu pour le mettre sur Docker Hub. Si vous pensez que je vous peux être utile (malgré mes faibles connaissances), n'hésitez pas !

L'idéal serait un build automatique depuis ce même dépôt, ce qui garantirait que c'est bien ce code qui est exécuté.

Pour ma part je suis pls GitLab que GitHub, un contributeur pour contribuer un workflow basé sur les GitHub Action est demandé siouplé !

Yes, on pourrait faire un Github Actions qui pousserait la version compilée sur un registry public (Docker Hub ou Github par exemple) en gardant bien sûr la licence.
Je vais voir pour forker le projet et essayer de faire cela alors (si c'est la façon pour collaborer sur ce projet ?).

Je n'ai pas pris (encore) le temps de migrer mes projets de github vers gitlab mais c'est dans ma TODO...

Très bien @Shosta, n'hésite pas à proposer une pull request :)

Merci à tous les deux !

Hello,

J'ai essayé de lancer le conteneur Docker (après l'avoir créé via docker-compose et aussi docker build .), mais je rencontre le problème suivant (quelque soit la méthode pour construire le conteneur Docker) :

docker run 07a235916fc5
make: *** No rule to make target 'clean'.  Stop.
make: *** No targets specified and no makefile found.  Stop.

Il semble qu'il manque des informations (pourtant make est bien installé via apt-get). Ne faudrait-il pas copier les sources dans le conteneur (via COPY . .) afin de pouvoir utiliser les sources pour lancer l'application ?

J'ai bien créé un fichier config.inc dans /config avec mes valeurs, mais cela ne fonctionne pas.

Etes-vous sur que le conteneur Docker est correctement configuré ?
Quelle est la commande pour lancer le conteneur Docker et avoir le résultat ?
J'ai essayé docker run <container_id>
J'ai également essayé de façon interactive, mais sans plus de succès.

Et enfin, je ne sais pas où va atterir le résultat dans le conteneur Docker (car j'imagine alors qu'il faut faire un volume pour le récupérer sur le système en local).
Peut-être que @Kilhog peut m'en dire plus ?

Merci

J'ai essayé de lancer le conteneur Docker (après l'avoir créé via docker-compose et aussi docker build .), mais je rencontre le problème suivant (quelque soit la méthode pour construire le conteneur Docker) :

docker run 07a235916fc5
make: *** No rule to make target 'clean'.  Stop.
make: *** No targets specified and no makefile found.  Stop.

Le Makefile ne s'occupe pas du tout de Docker.

Ne faudrait-il pas copier les sources dans le conteneur (via COPY . .) afin de pouvoir utiliser les sources pour lancer l'application ?

Sans se lancer dans un cours de Docker, voici quelques explications.

Le docker-compose ne fait que rendre plus facile le lancement du container (après avoir construit l'image ni nécessaire), en précisant le montage du dossier courant dans /data. La commande équivalente serait : docker run --rm -v $PWD:/data attestation-covid19_gen (notons que le nom du container à lancer est défini par ce docker-compose après qu'il ait construit l'image).

On pourrait construire l'image - sans lancer de container : docker build docker/ -t attestation-covid19_gen.

Toujours est-il que ce container ne fait que lancer make, depuis /data, qui contient le code du générateur grâce au
montage du dossier courant ; le container (l'image) ne contient en effet pas le code du générateur lui-même.

En conséquence de quoi, en l'état, si on poussait l'image obtenue sur le Docker Hub, sans ce code elle ne pourrait donc pas fonctionner comme attendu. Il resterait nécessaire de tirer le dépôt git.

Pour obtenir une image "autonome", il faudrait en effet COPY quelques fichiers dans l'image.

Mais ça ne suffirait pas encore ; en effet, le Makefile génère un fichier attestation.pdf dans le dossier courant, /data ; pour le récupérer depuis le host, il faudrait qu'il soit disponible via un montage de dossier, or si on monte /data au lancement du container, alors celui-ci n'a plus le code :-)
Une solution serait de modifier le chemin du fichier généré, par exemple un dossier /output, et monter celui-ci depuis le host : docker run --rm -v $PWD:/output attestation-covid19_gen.

Mais ça ne suffirait pas encore, car il manque le montage du fichier config/config.inc, qui de toute façon est vide. L'utilisateur doit alors créer lui-même ce fichier dûement rempli (maconfig.txt par exemple), et le mount-bind : docker run --rm -v $PWD:/output -v ./maconfig.txt:/data/config/config.inc attestation-covid19_gen

Pour ma part, je préfère continuer d'utiliser le simple docker-compose up pour regénérer une attestation, plutôt que de ruiner mon budget clavier à taper des commandes à rallonge !

Yes, c'est bien ce que je pensais en regardant la façon dont cela fonctionnait.
Merci pour la confirmation. 👍
Je vais voir si je peux faire quelque chose au regard de ces éclaircissements.