首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >$(pwd) -上升一级

$(pwd) -上升一级
EN

Stack Overflow用户
提问于 2017-07-03 14:25:49
回答 1查看 4K关注 0票数 2

我对bash/shell脚本世界非常陌生,我正在尝试下面的操作,它可能非常简单,但我无法理解命令,如果有人能在这里帮助我,并向我介绍一些文档wrt到shell脚本主题,那就太好了。提前谢谢你。

我的build.sh和Dockerfile位于一个名为.settings的文件夹下,该文件夹直接位于应用程序根目录下。现在,在我的build.sh和Dockerfile中,当我引用$(pwd)或COPY之类的内容时。/ app /它可能无法工作,因为我的build.sh和Dockerfile并不直接位于应用程序根目录下。

在这个场景中,我可以在上面提到的文件中使用什么命令。希望我说得很清楚。再一次,这可能是非常简单,因为我是一个新手在这个舞台上,我发现这有点困难。

代码语言:javascript
复制
inside build.sh, reference to $(pwd)

docker run \
-u root \
--rm \
-v $(pwd):/app \ ----> this $(pwd) references the application root, but if I 
move this build.sh inside a folder called .settings then the $(pwd) context 
would change and I still want to refer it to the root.
<MYIMAGE NAME FROM LOCAL REPO>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-03 14:38:43

docker build的最后一个arg (通常类似于docker build . )是docker中的构建上下文。此目录被发送到运行构建的服务器,并使用此上下文执行所有COPYADD命令。这些命令不运行在客户端上,而docker是一个客户机/服务器应用程序,因此在该上下文中不存在的任何内容只是为了构建映像而不存在。

因此,在上面的示例中,docker build .当前目录是构建上下文,如果在.settings目录中运行该目录,那么只有这些文件是构建上下文的一部分。因此,您的build.sh脚本需要传递一个不同的目录,还需要引用Dockerfile在该构建上下文中的位置。看起来是这样的:

代码语言:javascript
复制
docker build -f .settings/Dockerfile ..

当您这样做时,所有的COPYADD命令现在都将与父目录相关,因此您可能需要调整您的Dockerfile以进行补偿。

对于您的$(pwd)参考,您可以在运行docker run命令之前使用cd ..,也可以更新命令如下:

代码语言:javascript
复制
docker run \
  -u root \
  --rm \
  -v $(pwd)/..:/app \
  <your image>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44888079

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档