Linux $(pwd)-向上一级

Linux $(pwd)-向上一级,linux,bash,shell,docker,Linux,Bash,Shell,Docker,我是bash/shell脚本领域的新手,我正在尝试做下面的工作,它可能非常简单,但我无法理解命令,如果有人能在这里帮助我,并向我指出一些有关shell脚本主题的文档,那将是非常棒的。先谢谢你 My build.sh和Dockerfile位于名为.settings的文件夹下,此文件夹直接位于应用程序根目录下。现在在build.sh和Dockerfile中,当我引用$(pwd)或COPY之类的内容时/应用程序/它可能无法工作,因为my build.sh和Dockerfile不直接位于应用程序根目录下

我是bash/shell脚本领域的新手,我正在尝试做下面的工作,它可能非常简单,但我无法理解命令,如果有人能在这里帮助我,并向我指出一些有关shell脚本主题的文档,那将是非常棒的。先谢谢你

My build.sh和Dockerfile位于名为.settings的文件夹下,此文件夹直接位于应用程序根目录下。现在在build.sh和Dockerfile中,当我引用$(pwd)或COPY之类的内容时/应用程序/它可能无法工作,因为my 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>
inside build.sh,引用$(pwd)
码头工人赛跑\
-根\
--rm\
-v$(pwd):/app\--->此$(pwd)引用应用程序根目录,但如果
将此build.sh移动到名为.settings的文件夹中,然后移动$(pwd)上下文
将发生变化,我仍然希望将其引用到根。

docker build的最后一个参数,通常类似于
docker build。
是docker中的构建上下文。此目录被发送到运行生成的服务器,所有
COPY
ADD
命令都使用此上下文执行。这些命令不在客户机上运行,docker是一个客户机/服务器应用程序,因此任何不在该上下文中的内容都不存在用于构建映像的目的

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

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

执行此操作时,所有的
COPY
ADD
命令现在都与父目录相关,因此您可能需要调整
Dockerfile
以进行补偿


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

docker build -f .settings/Dockerfile ..
docker run \
  -u root \
  --rm \
  -v $(pwd)/..:/app \
  <your image>
docker运行\
-根\
--rm\
-v$(pwd)/…:/app\

我不确定我是否完全理解你的问题,但
是否回应“${PWD%/*}”
给了你想要的?如果您位于文件系统的根目录下,它将不起作用:)因此,我只是尝试实现以下功能,在上面的示例中,$(PWD)将记录/app/.settings,并且我希望从此上下文中将引用更改为root谢谢。我得到了您的引用,我在build.sh和Dockerfile中确实有某些引用,假设它们位于根目录下,因为这两个文件将位于.settings文件夹下,我如何更改使用$(PWD)的引用?例如现在的$(PWD)控制台输出/app/.settings/,我会撒谎更改它对/app的引用(考虑到根目录是/app)
COPY
ADD
都是相对于构建上下文的,并且看不到树上更远的任何内容。要将文件从.settings目录复制到映像中,只需
copy.settings/X/image/dir/X
就可以了,最后一个查询,在这个场景中,我如何将引用更改为$(PWD),正如我前面提到的,我确实很少有与$(PWD)相关的引用,而且由于build.sh已从根目录移动到.settings文件夹$(PWD)参考会改变,我希望参考上升一级,并参考根我相信我理解你的评论。您可能应该在问题中包含相关脚本。当然,我在原始查询中添加了