2016-06-21 68 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。

相关问题