2016-06-21 31 views
0

當我從官方的Docker Hub Repository中提供Golang應用程序時,我想知道應用程序將啓動的默認工作目錄是什麼?Docker Golang應用程序的工作目錄是什麼?

背景:我將不得不將本地證書頒發機構和服務器密鑰映射到容器以便爲TLS https服務,我不知道將它們映射到應用程序的哪個位置將能夠從應用程序的當前工作目錄中獲取它們容器?

+0

你在問什麼golang圖像爲WORKDIR設置?您可以在[DOCKERFILE]中看到它(https://github.com/docker-library/golang/blob/0ce80411b9f41e9c3a21fc0a1bffba6ae761825a/1.6/Dockerfile) – JimB

+0

但是,這是構建的WORKDIR,而不是可執行文件最終存儲的位置並呼籲,或?取決於它是去建設還是去安裝。我很少理解Dockerfile的語義 – JohnDoe

+2

「[WORKDIR](https://docs.docker.com/engine/reference/builder/#workdir)指令設置任何RUN,CMD,進入點,複製和添加的工作目錄在Dockerfile中遵循它的指令「您也可以在DOCKERFILE中自己設置WORKDIR,或使用絕對路徑來定位文件。 – JimB

回答

1

如果您使用的是golang:從DockerHub 1.X線onbuild圖像將被複制到(https://hub.docker.com/_/golang/

/go/src/app 

這意味着從目錄中運行

docker build 
所有文件和目錄

命令將被複制到容器中。

,所有圖像的工作目錄的是

/go 
+0

當我運行碼頭運行... -v /home/local/cert.pem:/go/cert,pem並嘗試在程序中打開cert.pem時,它會抱怨「文件未找到」。所以,看起來,/ go /不是應用程序正在執行的PWD? – JohnDoe

+2

@JohnDoe:執行'pwd'或'ls'並查看你在哪裏以及目錄中的內容。 – JimB

+0

沒有,謝謝! – JohnDoe

0

Go會返回使用當前的工作目錄

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

一個golang容器內執行和啓動之後,該PWD設置爲

/go/src/app 

golang應用程序的當前工作目錄啓動withi因此Docker容器是/go/src/app。爲了一個文件/目錄映射到一個容器中,你會HABE作爲Documentation for run描述使用-v -switch:

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

將映射本地文件到dockerized golang應用的PWD。

相關問題