Bonjour,
Dans le cadre d'un enseignement d'informatique, je souhaite montrer les multi stage builds à mes etudiants avec docker.
Pour ce faire je cherche un truc qui build quelque chose que je pourrais réutiliser dans la deuxieme image du multistage build.
Jai pensé à node mais ils ne connaissent pas forcément et cest un peu complexe de builder quelque chose avec node. Du coup je cherche un utilitaire linux qui genererait un binaire qui serait utilisable tel quel à partir d'un build (make etc.). Jai vu des builds from source mais qui souvent génerent des fichiers un peu partout sur le systeme…je cherche quelque chose qui genererait un binaire facilement reutilisable sans trop de fichiers annexes…
Est ce que vous auriez des idées pour ça?
Merci
# golang
Posté par Marc Quinton . Évalué à 4.
avec la langue GO (Golang), tu passes assez simplement du code source au code executable qui est facilement transportable, en particulier dans le cas des builds multistage Docker.
liens:
- https://www.it-wars.com/posts/virtualisation/docker-multi-stage-builds/
- https://docs.docker.com/develop/develop-images/multistage-build/
[^] # Re: golang
Posté par kr1p . Évalué à 1.
ok merci, mais je ne connais pas du tout le langage go…est ce que tu n'aurais pas un make classique en C d'un utilitaire facile à installer et utiliser?
[^] # Re: golang
Posté par Marc Quinton . Évalué à 3. Dernière modification le 29 juillet 2022 à 08:02.
bonjour,
traditionnellement, il n'y a pas de Makefile pour générer les binaires Golang, mais il me semble trivial de le créer.
Voici encore 3 exemples de création de containers Docker à partir de sources Go :
- https://github.com/bnkamalesh/golang-dockerfile
- https://github.com/callicoder/go-docker (https://www.callicoder.com/docker-golang-image-container-example/).
- https://fasca.github.io/assets/img/docker/multi-stage-build-GO.pdf
[^] # Re: golang
Posté par Marc Quinton . Évalué à 4.
encore un lien (c, golang) : https://enix.io/fr/blog/cherie-j-ai-retreci-docker-part1/
# docker de base
Posté par NeoX . Évalué à 5.
step 1) ton systeme de base avec un docker …
step 2) prendre l'image du system ajouter un service (web par exemple)
step 3) prendre l'image OS + WEB et ajouter un site dedans
tu obtiens alors un multi-stage build
ou alors j'ai pas compris la question ?
[^] # Re: docker de base
Posté par kr1p . Évalué à 2.
Non je cherche à generer un binaire que je peux réutiliser ensuite
[^] # Re: docker de base
Posté par NeoX . Évalué à 4.
donc ta question est mal formulée ou je l'ai mal comprise
le fait d'utiliser docker n'aurait rien à voir avec le multistage build qui doit sortir un binaire
# busybox
Posté par cg . Évalué à 5.
Busybox me semble être un bon candidat.
En première étape tu aurais une phase de build, et en second une phase d'install qui crée (éventuellement) les liens symboliques vers le binaire (par exemple
grep -> /usr/bin/busybox
).# C sinon
Posté par Cyrille Pontvieux (site web personnel, Mastodon) . Évalué à 3.
Tu prends une image, tu ajoutes tout ce qu’il faut pour compiler du C, les entêtes et autres bibli. Tu compiles ton programme en C (un hello world peut suffire)
Tu prends une image plus simple, compatible avec la libc de l’image de base (donc pas de mix entre la gnu libc et μlibc par exemple). Genre debian pour la première image et busybox pour la deuxième fonctionne.
Tu copie ton binaire de la base dans la finale, tu le définis en tant que entrypoint et tu fais constater à tes étudiants qu’ils ne peuvent rien compiler dans l’image finale même si t’as installé tous les outils dans l’image de base.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.