2016-09-23 4 views
0

Ich mag würde COPY-Befehl dockerfile für Build-Bild Docker mit Kopie bash-Datei von Host (Windows 10) zu ubuntu Bild wie folgt starten:dockerfile mit Fenstern Weg

COPY "C:\toto\directory_good\base.sh" /home/docker/scripts/base.sh 

Ich versuche, viel Möglichkeit, aber ich immer die gleiche Fehlermeldung:

lstat C:\base.sh: no such file or directory 

ich möchte meinen Container docker mit einigen wenigen bash-Datei in meinem Windows 10 OS provisionning und konfigurieren.

Was ist die richtige Art, Pfadfenster in Dockerfile zu schreiben. Hast du ein Beispiel dafür, wie das funktioniert?

Antwort

0

einen relativen Pfad verwendet (nicht vollständig qualifiziert mit c: \, aber in Bezug auf das Build-Verzeichnis) und wechseln Sie in Slashes:

COPY scripts/base.sh /home/docker/scripts/base.sh 

Wenn Sie ein docker build -t myimg:latest . tun, die letzten . erzählt die Docker Client um das aktuelle Verzeichnis (mit Ausnahme der in .dockerignore aufgelisteten Dateien) an die Docker-Engine zu senden, um den Build zu erstellen. Alles, was nicht in diesem Verzeichnis enthalten ist, kann nicht mit einem COPY oder ADD Befehl enthalten sein. Der Standardprozess besteht darin, Ihre Dockerdatei und alle erforderlichen Abhängigkeiten in einem einzigen Ordner abzulegen und den Build in diesem Ordner auszuführen.

Beachten Sie auch, dass 1.12 die Möglichkeit hinzugefügt hat, das Escape-Zeichen aus dem umgekehrten Schrägstrich, den Linux/Unix verwendet, zu einem Backtick zu ändern. Dies ist in einer speziellen Escape-Direktive oben in Ihrer Docker-Datei definiert, mit dem Präfix #. Ich würde nicht empfehlen, dies mit Bildern zu tun, die Sie für Linux-Hosts erstellen:

# escape=` 

# Example Dockerfile with escape character changed 

FROM windowsservercore 
COPY testfile.txt c:\ 
RUN dir c:\