【问题标题】:Docker build is not working - It does not find the DockerfileDocker 构建不工作 - 它没有找到 Dockerfile
【发布时间】:2021-11-02 15:10:18
【问题描述】:

我正在尝试使用 docker 文件构建一个 quarkus 容器,但看起来 docker build 没有找到 Dockerfile。我已经更改了 Dockerfile 的名称,但仍然无法正常工作。

我运行:docker build src/main/docker/native.dockerfile

还有错误:

 docker build src/main/docker/native.dockerfile
[+] Building 0.1s (1/2)
 => ERROR [internal] load build definition from Dockerfile                                                                                                    0.0s
 => => transferring dockerfile: 97B                                                                                                                           0.0s
------
 > [internal] load build definition from Dockerfile:
------
failed to solve with frontend dockerfile.v0: failed to read dockerfile: error from sender: walk src\main\docker\native.dockerfile: System cannot find specified path. 

这是一个印刷品:

即使我使用 intellij 运行它也会引发另一个错误:

这是码头文件:

FROM registry.access.redhat.com/ubi8/ubi-minimal
WORKDIR /work/
COPY target/*-runner /work/application
RUN chmod 775 /work
CMD ./application -Dquarkus.http.host=0.0.0.0 -Dquarkus.http.port=${PORT}

我做错了什么?

【问题讨论】:

  • docker build 的参数是目录名,不是文件名;如果构建脚本未命名为Dockerfile,则需要docker build -f 选项。在您说“它引发错误”的地方,您放置了一个图像文件而不是错误;你能用构建命令的实际输出替换图像吗?
  • @DavidMaze docker build -f 仍然无法正常工作。有错误:docker build -f src/main/docker/native.dockerfile "docker build" requires exactly 1 argument. See 'docker build --help'. Usage: docker build [OPTIONS] PATH | URL | - Build an image from a Dockerfile

标签: docker intellij-idea dockerfile quarkus docker-build


【解决方案1】:

首先,说到-f标志,命令:

docker build -f src/main/docker/native.dockerfile

正如你所提到的,这不起作用,但我认为解释原因对我来说很重要。原因是 - 您没有指定 Dockerfile 的构建上下文。当您输入这样的内容时:

docker build src/main/docker/native.dockerfile

它将查找名为 Dockerfile 的 Dockerfile,但 src/main/docker/native.dockerfile 将充当构建的上下文。换句话说,当您将某些内容复制到您的图像时,docker 需要了解您想要复制文件/目录的确切位置。因此,您可以为 Dockerfile 分配任何您想要的名称,只需记住构建上下文(可以是相对的或绝对的)

现在让我来解决您遇到的错误 :)

粗略地说,您遇到了 2 个不同的问题。首先是 - 当你跑的时候:

docker build /build/context/path

docker 引擎无法确定上下文。我不在 Windows 上使用 docker,但我很确定这是因为分隔符。如果我是你,我会简单地将目录(只是为了方便你的生活)更改为代表你的构建上下文的目录(我假设这是同一个目录,你的 Dockerfile 所在的位置),然后简单地运行:

docker build --file native.dockerfile .

但是您会遇到问题,即您在 Intelij 中遇到的问题。 这完全是另一个问题。 原因 - 当 docker 将文件从主机复制到您的映像时,它无法找到合适的(就您的通配符而言)要复制的文件。我没有看到您的目标目录 - 它没有出现在屏幕截图中,所以我无法进一步提出任何建议,但问题就在那里。随意附上它们,让我们一起调查:)

祝你有美好的一天!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-02
    • 2023-01-16
    • 1970-01-01
    • 2021-12-19
    相关资源
    最近更新 更多