在IDEA中运行docker comopse提示找不到文件或目录?

这是docker-compose.yml文件内容

version: '3'
services:

  suntae-gateway:
    build:
      context: ./suntae-gateway
      dockerfile: Dockerfile
    image: suntae-gateway
    container_name: suntae-gateway
    ports:
      - "10101:10101"

这是Dockerfile文件,以我的网关服务为例

# 使用一个已知可用的基础镜像
FROM openjdk:8-jdk

# 设置 locale 以支持中文
RUN apt-get clean && apt-get update \
    && apt-get install -y locales \
    && sed -i -e 's/# zh_CN.UTF-8 UTF-8/zh_CN.UTF-8 UTF-8/' /etc/locale.gen \
    && locale-gen

ENV LANG zh_CN.UTF-8
ENV LANGUAGE zh_CN.UTF-8
ENV LC_ALL zh_CN.UTF-8

ADD target/suntae-gateway-0.0.1-SNAPSHOT.jar suntae-gateway-0.0.1-SNAPSHOT.jar
EXPOSE 10101

ENTRYPOINT ["java", "-jar","suntae-gateway-0.0.1-SNAPSHOT.jar","--spring.profiles.active=prod"]

下面是目录结构

myproject
    - docker-compose.yml
    - suntae-gateway
        - Dockerfile
        - target
            - suntae-gateway-0.0.1-SNAPSHOT.jar

下面是报错信息,提示找不到文件或目录

docker-compose.exe -f D:\workspace\java\new_energy_vehicle_monitoring_platform\docker-compose.yml -p new_energy_vehicle_monitoring_platform up -d suntae-gateway
正在准备 Docker SSH 环境…
suntae-gateway Pulling 
suntae-gateway Warning 
#1 [internal] load .dockerignore
#1 transferring context: 2B done
#1 DONE 0.0s

#2 [internal] load build definition from Dockerfile
#2 transferring dockerfile: 580B done
#2 DONE 0.0s

#3 [internal] load metadata for docker.io/library/openjdk:8-jdk
#3 DONE 1.5s

#4 [internal] load build context
#4 transferring context: 2B done
#4 DONE 0.0s

#5 [2/3] RUN apt-get clean && apt-get update     && apt-get install -y locales     && sed -i -e 's/# zh_CN.UTF-8 UTF-8/zh_CN.UTF-8 UTF-8/' /etc/locale.gen     && locale-gen
#5 CACHED

#6 [3/3] ADD target/suntae-gateway-0.0.1-SNAPSHOT.jar suntae-gateway-0.0.1-SNAPSHOT.jar
#6 ERROR: failed to calculate checksum of ref moby::l96h031j21ghq9ri7hbecrnl6: failed to walk /var/lib/docker/tmp/buildkit-mount3027411329/target: lstat /var/lib/docker/tmp/buildkit-mount3027411329/target: no such file or directory

#7 [1/3] FROM docker.io/library/openjdk:8-jdk@sha256:8a9d5c43f540e8d0c003c723a2c8bd20ae350a2efed6fb5719cae33b026f8e7c
#7 resolve docker.io/library/openjdk:8-jdk@sha256:8a9d5c43f540e8d0c003c723a2c8bd20ae350a2efed6fb5719cae33b026f8e7c 0.0s done
#7 sha256:8a9d5c43f540e8d0c003c723a2c8bd20ae350a2efed6fb5719cae33b026f8e7c 1.29kB / 1.29kB done
#7 sha256:9413213335131c4e06b21a8e379bd9b6a20afcd6b762540463d5f7c72942dcdd 1.79kB / 1.79kB done
#7 sha256:e24ac15e052e04a3462ef4984b5d83214f7f65c06f54acd3745a1926e226be16 7.81kB / 7.81kB done
#7 DONE 0.1s
------
 > [3/3] ADD target/suntae-gateway-0.0.1-SNAPSHOT.jar suntae-gateway-0.0.1-SNAPSHOT.jar:
------
failed to solve: failed to compute cache key: failed to calculate checksum of ref moby::l96h031j21ghq9ri7hbecrnl6: failed to walk /var/lib/docker/tmp/buildkit-mount3027411329/target: lstat /var/lib/docker/tmp/buildkit-mount3027411329/target: no such file or directory
`docker-compose` 进程结束,退出代码为 17

image.png
我使用的是IDEA 中的鼠标点击的运行按钮,
奇怪的是单独运行Dockerfile文件没有问题,但是运行docker-compose就有问题
将这个目录结构上传到服务器使用命令运行docker-compose也没有问题,
难道是IDEA的问题吗,求大神指教

阅读 901
avatarAI BotBETA

根据报错信息,问题出现在Dockerfile中的ADD指令。当Docker构建镜像时,它试图将target目录下的suntae-gateway-0.0.1-SNAPSHOT.jar文件复制到新构建的镜像中,但无法找到该文件。这可能是由于以下原因导致的:

  1. 文件路径错误:请确保suntae-gateway-0.0.1-SNAPSHOT.jar文件位于suntae-gateway目录下的target子目录中。如果文件不在该位置,Docker将无法找到它。
  2. IDEA配置问题:可能与IDEA的Docker插件或其他配置有关。请确保IDEA正确配置了Docker插件,并且能够正确连接到Docker环境。
  3. Dockerfile和docker-compose.yml的上下文:Dockerfile和docker-compose.yml文件中的上下文可能不匹配。在Dockerfile中,上下文被设置为当前目录(.),而在docker-compose.yml中,上下文被设置为myproject目录。请确保这两个文件的上下文设置一致。

解决方案:

  1. 确认文件路径:首先,请确保suntae-gateway-0.0.1-SNAPSHOT.jar文件确实位于suntae-gateway目录下的target子目录中。
  2. 重新组织目录结构:如果文件确实在该位置,但仍然出现问题,可以将整个myproject目录(包括Dockerfile和docker-compose.yml文件)移动到与suntae-gateway目录平行的位置,然后再次尝试运行。
  3. 检查IDEA配置:确保IDEA中的Docker插件已正确配置,并且能够连接到Docker环境。可以尝试重启IDEA并清理Docker插件缓存后再次运行。
  4. 上下文一致性:在Dockerfile和docker-compose.yml文件中,将上下文设置为相同的目录。可以尝试将docker-compose.yml中的上下文设置为.(当前目录),以匹配Dockerfile的设置。

修改后的目录结构示例:

myproject
├── docker-compose.yml
└── suntae-gateway
    ├── Dockerfile
    └── target
        └── suntae-gateway-0.0.1-SNAPSHOT.jar

请按照上述步骤进行检查和调整,然后再次尝试运行docker-compose。如果问题仍然存在,可能需要更深入地检查IDEA配置和Docker环境设置。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题