2016-06-21 17 views
0

Wenn ich eine Golang-Anwendung aus dem offiziellen Docker Hub-Repository heraus betreue, frage ich mich, was das Standardarbeitsverzeichnis sein wird, in dem die Anwendung gestartet wird?Was ist das Arbeitsverzeichnis einer Docker Golang-Anwendung?

Hintergrund: Ich werde lokale Zertifizierungsstelle und Serverschlüssel in den Container zuordnen müssen, um TLS https zu bedienen, und ich frage mich, wo sie der Anwendung zugeordnet werden können sie im aktuellen Arbeitsverzeichnis der Anwendung aus dem abrufen Container?

+0

Fragen Sie, was das Golang-Bild für WORKDIR setzt? Sie können es in der [DOCKERFILE] (https://github.com/docker-library/golang/blob/0ce80411b9f41e9c3a21fc0a1bffba6ae761825a/1.6/Dockerfile) sehen – JimB

+0

Aber das ist das WORKDIR für den Build, nicht wo die ausführbare Datei schließlich gespeichert wird und angerufen, oder? Abhängig davon ist es ein Build oder Installation. Ich verstehe kaum die Semantik von Dockerfile s – JohnDoe

+2

"Die [WORKDIR] (https://docs.docker.com/engine/reference/builder/#workdir) Anweisung legt das Arbeitsverzeichnis für jeden RUN, CMD, ENTRYPOINT, COPY und ADD Anweisungen, die in der Dockerdatei folgen "Sie können WORKDIR auch selbst in Ihrer DOCKERFILE setzen oder einen absoluten Pfad verwenden, um die Dateien zu finden. – JimB

Antwort

1

Wenn Sie die golang verwenden: 1.x-onbuild Bild von DockerHub wird in kopiert werden (https://hub.docker.com/_/golang/)

/go/src/app 

bedeutet dies, alle Dateien und Verzeichnisse aus dem Verzeichnis, in dem Sie die

docker build 
laufen

Befehl wird in den Container kopiert.

Und der workdir aller Bilder ist

/go 
+0

Wenn ich docker laufen lasse ... -v /home/local/cert.pem:/go/cert,pem und versuche, cert.pem im Programm zu öffnen, beschwert es sich über "Datei nicht gefunden". So, wie es scheint, ist/go/nicht das PWD, in dem die Anwendung ausgeführt wird? – JohnDoe

+2

@JohnDoe: Führe einen 'pwd' oder' ls' aus und sehe wo du bist und was im Verzeichnis ist. – JimB

+0

Hat das getan, danke! – JohnDoe

0

Go wird das aktuelle Arbeitsverzeichnis zurückkehrt mit

currdir, _ = filepath.Abs(filepath.Dir(os.Args[0])) 

Ausgeführt in einem golang Behälter und direkt nach dem Start wird der PWD auf

Das aktuelle Arbeitsverzeichnis einer Golang-Anwendung, die mit gestartet wird n ein Docker-Container ist also /go/src/app. Um eine Datei/Verzeichnis in einen Behälter zur Karte finden Sie die Habe -v -Schalter zu verwenden, wie in der Documentation for run beschrieben:

-v /local/file.pem:/go/src/app/file.pem 

eine lokale Datei in das PWD der dockerized golang App abbildet.

Verwandte Themen