Ich muss ein Dockerfile
Docker-Image erstellen, das auf Alpine Linux basiert. Jetzt muss ich ein Paket als Teil davon installieren Dockerfile
.
Derzeit habe ich:
RUN apk update && \
apk upgrade && \
apk add git
Anscheinend ist dies eine schlechte Idee, da das Ergebnis nicht deterministisch ist. Stattdessen kommt es darauf an, zu welchem Zeitpunkt ich das Image erstelle und welche Version von git
installiert wird.
Wie geht das richtig?
Ich denke, dass ich sagen muss updated
, upgrade
und add
welche Versionen ich verwenden soll, aber wie mache ich das?
Ich habe gesehen, dass es apk
das Anheften von Repositorys unterstützt, aber das ist nicht das, was ich will (zumindest glaube ich das), weil ich kein Repository, sondern ein Paket anheften möchte.
Mit anderen Worten: Wenn git
über installiert werden könnte npm
, könnte ich Folgendes ausführen:
npm install [email protected]
(oder welche Version ich haben möchte). Was ist das Äquivalent dazu für Alpine Linux?
quelle
apk add ansible~=2.4.1
sinngemäß>=2.4.1 <2.5.0
. Schauen Sie sich jubianchi.github.io/semver-check an, um Ihre eigenen Reichweiten zu testen.Derzeit gibt es keine Möglichkeit, beliebige ältere Versionen eines Pakets aus offiziellen Repositorys in Alpine Linux zu installieren. Das Beste, was Sie erreichen können, ist die Verwendung von Repositorys früherer Releases:
quelle
Weil ich das
testing
Repo benutzt habe. Am Ende baute ich meine eigene Kopie. Schritte:Gehen Sie zu den Paketdetails. Ex:
https://pkgs.alpinelinux.org/package/edge/testing/armhf/watchman
Klicken Sie auf das Festschreiben, klicken Sie auf die Links der APKBUILD-Datei und klicken Sie im Menü auf "Protokoll", um das Festschreibungsprotokoll der APKBUILD-Datei abzurufen. Wählen Sie dann ein Commit für Ihre APKBUILD-Datei und laden Sie es herunter. Ex:
https://git.alpinelinux.org/cgit/aports/tree/testing/watchman/APKBUILD?id=63f5e7d295659a855709901ce22a3e5f40fce455
Installieren Sie die Build-Tools:
Sie müssen kein
root
Benutzer sein, also erstellen Sie einenpackager
Benutzer mit Passwort:Dann erstellen Sie es
packager
im selben Verzeichnis wie die APKBUILD-Datei:Möglicherweise müssen Sie Fehler ermitteln und Abhängigkeiten installieren. In meinem Beispiel musste ich dies auf meinem vorhandenen Docker-Image ausführen als
root
:Nach einem erfolgreichen Build als
packager
, installieren Sie es alsroot
:Ich bin nicht sicher, wie
--allow-untrusted
ich das Teil entfernen soll , aber die Schritte haben bei mir funktioniert.quelle