gpt4 book ai didi

linux - $(pwd) - 上一级

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:39:09 24 4
gpt4 key购买 nike

我是 bash/shell 脚本世界的新手,我正在尝试执行以下操作,它可能非常简单,但我无法弄清楚命令,如果有人能帮助我,那就太好了在这里并指出一些关于 shell 脚本主题的文档。提前谢谢你。

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

在此场景中,我可以在上面引用的文件中使用什么命令。希望我说清楚了。这可能非常简单,因为我是这个领域的新手,我发现它有点困难。

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>

最佳答案

docker build 的最后一个参数,通常类似于 docker build . 是 docker 中的构建上下文。此目录被发送到构建运行的服务器,所有 COPYADD 命令都使用此上下文执行。这些命令不在客户端上运行,并且 docker 是一个客户端/服务器应用程序,因此任何不在该上下文中的东西对于构建图像的目的都是不存在的。

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

docker build -f .settings/Dockerfile ..

执行此操作时,所有 COPYADD 命令现在都将与父目录相关,因此您可能需要调整 Dockerfile 来补偿。


对于您的 $(pwd) 引用,您可以在运行 docker run 命令之前 cd .. 或更新命令以查看喜欢:

docker run \
-u root \
--rm \
-v $(pwd)/..:/app \
<your image>

关于linux - $(pwd) - 上一级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44888079/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com