Spring Boot docker-compose up给出'无法读取dockerfile:来自发送方的错误'

yhived7q  于 2024-01-06  发布在  Spring
关注(0)|答案(2)|浏览(288)

尝试简单地dockerize我的mongodb和spring Boot 应用程序。有很多的斗争,并认为我几乎有它运行,比终端打我这个错误:

  1. Building user
  2. [+] Building 0.0s (1/2)
  3. => ERROR [internal] load build definition from Dockerfile 0.0s
  4. => => transferring dockerfile: 121B 0.0s
  5. ------
  6. > [internal] load build definition from Dockerfile:
  7. ------
  8. failed to solve with frontend dockerfile.v0: failed to read dockerfile: error from sender: walk \\?\C:\Users\ZRC\Documents\GitHub\s6-kwetter-backend\user\Dockerfile: The system cannot
  9. find the path specified.
  10. ERROR: Service 'user' failed to build : Build failed

字符串
Dockerfile(位于子目录; user-module):

  1. FROM openjdk:11
  2. EXPOSE 8081
  3. ADD target/user-module-docker.jar user-docker.jar
  4. CMD ["java", "-jar", "user-docker.jar"]


docker-compose.yml(位于包含多个模块/微服务的主目录中):

  1. version: '3.8'
  2. services:
  3. user:
  4. build: ./user/Dockerfile
  5. restart: unless-stopped
  6. container_name: user-ms
  7. ports:
  8. - 8081:8080
  9. mongodb:
  10. image: mongo
  11. restart: always
  12. container_name: mongodb
  13. ports:
  14. - 27017:27017


就像它说指定的路径找不到,但它确实存在,那么我会在哪里出错呢?

ulydmbyx

ulydmbyx1#

错误是告诉你Dockerfile没有找到,因为路径不存在。这是因为它试图将路径输入为文件夹。
系统找不到指定的路径。
这是因为你在compose build语法中犯了一个错误。有两种方法可以使用它。

1.简单形式:

这是使用./users/作为上下文,期望Dockerfile在此目录中。

  1. user:
  2. build: ./user

字符串

2.复杂形式:

  1. user:
  2. build:
  3. context: ./
  4. dockerfile: ./users/Dockerfile


这可以让你分离上下文和Dockerfile所在的位置。在这个例子中,当前文件夹被用作上下文,Dockerfile取自./users/Dockerfile。当你的Dockerfile有不同的名称时,它也很有用。即Dockerfile.dev。
注意这只是一个例子,我不知道这在你的项目中是否有意义。你需要知道什么样的上下文是正确的。

context是什么意思?

docker build command从Dockerfile和“context”构建Docker镜像。构建的context是位于指定PATH或URL中的文件集。构建过程可以引用上下文中的任何文件。例如,您的构建可以使用COPY指令来引用上下文中的文件。
例如:

  1. docker build --file /path/to/Dockerfile /path/to/context

展开查看全部
pgky5nke

pgky5nke2#

尝试将Dockerfile路径中的符号“”更改为“/”

相关问题