Im Docker möchte ich Folgendes tun:
git clone XYZ
cd XYZ
make XYZ
Da es jedoch keinen CD-Befehl gibt, muss ich jedes Mal den vollständigen Pfad übergeben (make XYZ / fullpath). Irgendwelche guten Lösungen dafür?
Im Docker möchte ich Folgendes tun:
git clone XYZ
cd XYZ
make XYZ
Da es jedoch keinen CD-Befehl gibt, muss ich jedes Mal den vollständigen Pfad übergeben (make XYZ / fullpath). Irgendwelche guten Lösungen dafür?
Antworten:
Sie können ein Skript oder einen komplexeren Parameter für den RUN ausführen. Hier ist ein Beispiel aus einer Docker-Datei, die ich heruntergeladen habe, um sie mir zuvor anzusehen:
RUN cd /opt && unzip treeio.zip && mv treeio-master treeio && \
rm -f treeio.zip && cd treeio && pip install -r requirements.pip
Aufgrund der Verwendung von '&&' wird der endgültige Befehl 'pip install' nur erreicht, wenn alle vorherigen Befehle erfolgreich waren.
Da jeder RUN ein neues Commit und (derzeit) eine AUFS-Ebene erstellt, verbrauchen Sie die Grenzwerte, wenn Sie zu viele Befehle in der Docker-Datei haben. Daher kann das Zusammenführen der RUNs (wenn die Datei stabil ist) sehr schwierig sein nützliche Sache zu tun.
cd
einzigen für den aktuellen RUN
Befehl bestehen. Der nächste RUN
beginnt mit dem aktuellen WORKDIR
.
Verwenden Sie WORKDIR, um in ein anderes Verzeichnis zu wechseln . Alle Befehle RUN, CMD und ENTRYPOINT nach WORKDIR werden in diesem Verzeichnis ausgeführt.
RUN git clone XYZ
WORKDIR "/XYZ"
RUN make
RUN git clone http://username:password@url/example.git
WORKDIR /folder
RUN make