当前位置: 首页 > 知识库问答 >
问题:

子目录中的Dockerfile导致生成上下文外部的禁止路径异常

薛云瀚
2023-03-14

我正在尝试将一个dockerfile放入我的主启动项目AppMain的子目录中。AppMain有一个称为AppDependency的依赖项项目。当dockerfile位于appmain的根目录中时,所有文件都正常工作,但当它嵌套appmain的子目录中时,它将失败

4>Step 5/20 : COPY ["AppMain/AppMain.csproj", "AppMain/"]
4>COPY failed: stat /var/lib/docker/tmp/docker-builder453314675/AppMain/AppMain.csproj: no such file or directory

这对我来说是有意义的,因为它嵌套在子目录中,所以我只是在COPY命令前面添加了一个“../”,但这会导致以下上下文异常:

4>COPY failed: Forbidden path outside the build context: ../AppMain/AppMain.csproj ()

好的,这也是有意义的,因为docker文档说明上下文从dockerfile所在的地方开始,但这让我提出了真正的问题。

  1. 如果它不能在dockerfile所在的位置之外进行复制,而当它位于AppMain的根目录中时它可以工作,那么为什么它在复制apPreference项目时不会失败呢?该项目显然在docker文件所在位置的上方,并且在上下文之外,因为它必须上一个目录,然后下到apPreference项目?
  2. 有没有办法实现在子目录中嵌套dockerfile?

下面列出了整个docker文件。

FROM mcr.microsoft.com/dotnet/core/runtime:2.2-Strett-Slim作为基础

工作目录/应用程序

运行dotnet还原“appmain/appmain.csproj”

收到。.

WORKDIR“/src/appmain”

入口点[“dotnet”,“appmain.dll”]

共有1个答案

邢起运
2023-03-14

当使用docker Build-t xxx.在子目录中生成时,只有.中的内容将提交给docker后台进程以进行docker build。父文件夹中的东西将无法提交到docker引擎进行构建。

因此,您需要用cd..将执行目录移回父文件夹,然后使用next构建,然后它会将.发送到引擎,该文件现在是父文件夹的内容(但您现在需要指定dockerfile,如下所示)

docker build -t xxx -f ./YOUR_Subdirectory/Dockerfile .
 类似资料:
  • 我有以下文件夹结构: 我有我的micro-hr文件夹,其中是我的主包,我有一个本地lib,它是rabbitmq 这是我的dockerfile: docker撰写: 这是我的包裹。我的主包后端/微hr上的json: 我不知道我错在哪里,基本上我在我的主包中使用npm链接链接到我的lib,并尝试在docker中创建文件夹,但无济于事。 docker构建错误: 步骤6/10:复制/rabbitmq/包。

  • 我有一个包含各种Go服务和库的monorepo。目录结构如下所示: 这<代码>开始。mod文件位于monorepo目录的根目录中,服务使用该文件中声明的依赖项。 我使用以下命令构建Docker图像: 当我尝试使用上述Docker命令从monorepo目录的根构建Docker图像时,我得到以下错误: 复制失败:生成上下文之外的禁止路径:/去mod() 下面是我的Dockerfile 我需要做些什么才

  • 在Spring-Boot应用程序中,可以使用中的属性来选择上下文路径,但是由于我使用的是外部Tomcat8,因此没有使用该属性。 因此,我查看了tomcat-8文档,其中指出: 如果要使用与基文件名无关的上下文路径部署WAR文件或目录,则必须使用以下选项之一来防止双重部署: null null

  • 我的本地服务器上有一个工作的Docker Compose,现在我必须转到prod,我只是复制了prod服务器上的整个目录,相同的目录结构、配置文件等。但是当我运行Docker Compose命令(Docker-Compose-f Docker-Compose.dev.yml up)时,它抛出了以下错误: 步骤 7/28 : 复制 ../../data_acquisition_survey_api/

  • 我试图实现的是:我想在一个容器中缓存当前的users目录,以便在构建另一个容器时使用它们。 以下是的内容: 在我的服务Dockerfile中,我有以下内容: docker compose没有将服务中的路径视为与docker-compose.yml相关的路径,而是假设它与路径相关。是否可以让docker-compose从与docker-compose.yml相同的目录加载并按照我的方式设置上下文?