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

Docker build无法找到复制命令的源文件夹

鲁才艺
2023-03-14

我有一个多模块maven项目,我想为每个模块创建和发布一个映像,除了一个通用的实用程序模块,它是所有其他模块的依赖项。

项目结构如下:

project_root
 common_module
    -pom.xml
 module_a
    -pom.xml
    -Dockerfile
 module_b
    -pom.xml
    -Dockerfile
 -pom.xml
 -docker-compose.yml

为了构建一个fox示例中的module\u,我需要将common\u module文件夹也复制到容器中,并首先在common文件夹上运行mvn install。如果已经构建好,我可以在模块apom上运行mvn安装。xml也是。

我是Docker的新手,这是我一直在尝试的,我认为应该可以工作,根据COPY命令的留档,它指出:

可以指定多个src资源,但文件和目录的路径将被解释为相对于生成上下文的源。

我在模块a中有以下Dockerfile:

FROM openjdk:8-jre-alpine

# Install Maven
# (skipped for brevity)

# Create the project root
RUN mkdir -p /usr/src/project_root
WORKDIR /usr/src/project_root

# Copy all the necessary files for the packaging
# Copy the common module
COPY common_module /usr/src/project_root/common_module 
# Copy the service registry module (src + config folder)
COPY module_a /usr/src/project_root/module_a 

# Run maven install
RUN cd common_module 
RUN mvn clean install

RUN cd ../module_a 
RUN mvn clean install

我从project\u根文件夹发出这个命令(使其成为构建的上下文?):

docker build -t image_name:4.0 ./module_a

生成在第一个复制命令时失败,说明:

复制失败:stat/var/lib/docker/tmp/docker-builder380120612/common_模块:没有这样的文件或目录

我甚至不确定RUN命令是否有效,因为在这些命令之前构建失败了。

我做错了什么?如何将文件夹/文件复制到Dockerfile位置之外?

顺便说一句,我正在Windows 10 Pro上运行Docker版本18.03.1-ce,build 9ee9f40。


共有1个答案

楚雪松
2023-03-14

运行命令时

docker build -t image_name:4.0 ./module_a

您将构建上下文定义为module\u a目录。然后尝试将目录复制到容器中,但这是不可能的,因为它不在构建上下文中。

改用此命令:

docker build -t image_name:4.0 -f ./module_a/Dockerfile .

这样,将在构建上下文中包括模块a、通用模块和模块b。

 类似资料:
  • 所以我尝试使用python为我的不和谐机器人做这个简单的投票函数: 问题是,当我试图调用函数时,它会给我一个错误。错误:忽略命令无中的异常:discord.ext.commands.errors.命令没有找到:命令“makePoll”没有找到。 编辑:试图命名client.commandmakePoll,但知道它给我这个错误:忽略命令makePoll中的异常:Traceback(最近一次调用最后一

  • 问题内容: package main 这是文档中用于执行系统命令的代码示例。http://golang.org/pkg/os/exec/#example_Cmd_Output即使在文档站点上,示例执行框也不运行,并且具有相同的错误: 2009/11/10 23:00:00 exec:“ date” :在$ PATH中找不到可执行文件 在Windows上,我得到:exec:“ date”:在%PAT

  • 我成功地将“libmynative.so”文件夹复制到armeabi文件夹 我仍然得到以下错误 这是我的主要活动

  • 问题内容: 我正在Swift中构建一个简单的程序,它应该将具有特定扩展名的文件复制到另一个文件夹中。如果该文件夹存在,程序将只将它们复制到该文件夹​​中;如果该文件夹不存在,则程序必须先将其复制。 运行此代码将正确识别MTS文件,但会导致“添加失败…”,我在做什么错? 问题答案: 从文档中: 放置的副本的路径。此路径必须在新位置包含文件或目录的名称。… 您必须将文件名附加到调用的目标目录中 (为S

  • 问题内容: 我想执行构建后步骤,以使用MSDeploy将某些文件复制到网站文件夹中。 最终,我将在远程位置执行此操作(指定,开关等),但是现在我在本地运行: 此方法有效,但是它将删除网站文件夹的 所有 内容,并将其替换为“ D:\ files_to_copy”的内容(如您所料!)。因此,我想知道如何将其简单地复制到站点的子文件夹中? 我已经尝试过了,但这只是创建了一个嵌套在现有IIS应用程序中的新

  • 我有一个使用shell的脚本。在使用命令的行中出现错误。似乎不包括在我的shell中。 如果我显式尝试从shell运行,我会得到: