In Docker möchte ich das tun:
git clone XYZ
cd XYZ
make XYZ
Aber da es keinen `cd` Befehl gibt, muss ich jedes Mal den vollständigen Pfad angeben (make XYZ /vollständigerPfad). Gibt es gute Lösungen dafür?
In Docker möchte ich das tun:
git clone XYZ
cd XYZ
make XYZ
Aber da es keinen `cd` Befehl gibt, muss ich jedes Mal den vollständigen Pfad angeben (make XYZ /vollständigerPfad). Gibt es gute Lösungen dafür?
Um in ein anderes Verzeichnis zu wechseln, verwenden Sie WORKDIR. Alle RUN-, CMD- und ENTRYPOINT-Befehle nach WORKDIR werden aus diesem Verzeichnis ausgeführt.
RUN git clone XYZ
WORKDIR "/XYZ"
RUN make
Sie können ein Skript ausführen oder einen komplexeren Parameter an RUN übergeben. Hier ist ein Beispiel aus einem Dockerfile, das ich zuvor heruntergeladen habe, um es 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 '&&' gelangt der Befehl nur zum finalen 'pip install', wenn alle vorherigen Befehle erfolgreich waren.
Tatsächlich wird für jeden RUN ein neuer Commit & (derzeit) eine AUFS-Schicht erstellt. Wenn Sie also zu viele Befehle im Dockerfile haben, werden Sie die Limits überschreiten. Das Zusammenführen der RUNs (wenn die Datei stabil ist) kann also sehr nützlich sein.
Wenn Sie das Arbeitsverzeichnis für den Container ändern möchten, wenn Sie ein Docker-Image ausführen, können Sie die -w
(kurz für --workdir
) Option verwenden:
docker run -it -w /some/valid/directory/inside/docker {image-name}
Ref:
docker run
Optionen: https://docs.docker.com/engine/reference/commandline/run/#options
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.