Je Dockerfile
construis une image Docker basée sur Alpine Linux. Maintenant, je dois installer un paquet dans le cadre de cela Dockerfile
.
Actuellement j'ai:
RUN apk update && \
apk upgrade && \
apk add git
Apparemment, c'est une mauvaise idée, car le résultat est non déterministe. Au lieu de cela, cela dépend du moment où je construis l'image, de la version en cours d' git
installation.
Quelle est la bonne façon de faire cela?
Je suppose que je dois dire updated
, upgrade
et add
quelles versions à utiliser, mais comment dois - je cela?
J'ai vu que cela apk
prenait en charge l'épinglage de référentiels, mais ce n'est pas ce que je veux (du moins, je le crois), car je ne veux pas épingler un référentiel, mais un paquet.
En d'autres termes: Si vous git
pouviez installer via npm
, je pourrais exécuter:
npm install [email protected]
(ou quelle que soit la version que je veux avoir). Quel est l'équivalent pour Alpine Linux?
la source
apk add ansible~=2.4.1
sens>=2.4.1 <2.5.0
. Consultez jubianchi.github.io/semver-check pour tester vos propres gammes.À l'heure actuelle, il n'existe aucun moyen d'installer d'anciennes versions arbitraires d'un paquet à partir de référentiels officiels sous Alpine Linux. La meilleure chose à faire est d'utiliser les référentiels des versions précédentes:
la source
Parce que j'utilisais le
testing
repo. J'ai fini par construire ma propre copie. Pas:Aller aux détails du paquet. Ex:
https://pkgs.alpinelinux.org/package/edge/testing/armhf/watchman
Cliquez sur le commit, cliquez sur les liens du fichier APKBUILD et choisissez "Log" dans le menu pour obtenir le journal de validation du fichier APKBUILD. Choisissez ensuite un commit pour votre fichier APKBUILD et téléchargez-le. Ex:
https://git.alpinelinux.org/cgit/aports/tree/testing/watchman/APKBUILD?id=63f5e7d295659a855709901ce22a3e5f40fce455
Installez les outils de construction:
Vous devez être non
root
utilisateur, alors créez unpackager
utilisateur avec mot de passe:Puis construisez-le comme
packager
dans le même répertoire que le fichier APKBUILD:Vous devrez peut-être résoudre des erreurs et installer des dépendances. Dans mon exemple, je devais le faire sur mon image Docker existante en tant que
root
:Après une compilation réussie
packager
, installez-le en tant queroot
:Vous ne savez pas comment retirer la
--allow-untrusted
pièce, mais les étapes ont fonctionné pour moi.la source