微信云托管服务部署失败,显示报错”COPY failed: stat /var/lib/docker/,no such file or directory,如何解决?

微信云托管显示服务部署失败
显示报错:
COPY failed: stat /var/lib/docker/overlay2/cd8ff45438c1ea597a25bff2d3f5741376b496ebbd6b40f7688a07221c8cc9a3/merged/app/target/harmonize-music-0.0.1.jar: no such file or directory

img

DockerFile文件内容

img

img

# 写在最前面:强烈建议先阅读官方教程[Dockerfile最佳实践](https://docs.docker.com/develop/develop-images/dockerfile_best-practices/)
# 选择构建用基础镜像(选择原则:在包含所有用到的依赖前提下尽可能提及小)。如需更换,请到[dockerhub官方仓库](https://hub.docker.com/_/java?tab=tags)自行选择后替换。
FROM maven:3.6.0-jdk-8-slim as build

# 指定构建过程中的工作目录
WORKDIR /app

# 将src目录下所有文件,拷贝到工作目录中src目录下
COPY src /app/src

# 将pom.xml文件,拷贝到工作目录下
COPY pom.xml /app

# 执行代码编译命令
RUN mvn -f /app/pom.xml
   #clean package -Dmaven.test.skip=true -Dspring.profiles.active=test

# 选择运行时基础镜像
FROM alpine:3.13

ENV MYSQL_HOST 10.30.107.185
ENV MYSQL_USER_NAME harmonizemusic
ENV MYSQL_PASSWORD music2023!
ENV DATABASE_NAME HarmonizeMusic

# 安装依赖包,如需其他依赖包,请到alpine依赖包管理(https://pkgs.alpinelinux.org/packages?name=php8*imagick*&branch=v3.13)查找。
RUN apk add --update --no-cache openjdk8-jre-base \
    && rm -f /var/cache/apk/*

# 使用 HTTPS 协议访问容器云调用证书安装
RUN apk add ca-certificates

# 指定运行时的工作目录
WORKDIR /app

# 将构建产物jar包拷贝到运行时目录中
COPY --from=build /app/target/harmonize-music-0.0.1.jar .

# 暴露端口
EXPOSE 8095

# 执行启动命令
CMD ["java", "-jar", "/app/harmonize-music-0.0.1.jar", "--spring.profiles.active=test"]

这个错误提示是因为云托管服务在部署时,需要使用到Docker,而在部署过程中可能出现了Docker环境配置不正确的情况。解决方法如下:

确认Docker环境是否正确:在命令行中输入docker version命令,查看Docker是否正确安装和配置。如果提示Docker未安装或未配置正确,可以参考官方文档进行安装和配置。

清理Docker环境:在命令行中输入docker system prune命令,清理Docker环境中的无用镜像和容器。然后重新尝试部署云托管服务。

更新云托管服务:如果以上方法仍然无法解决问题,可以尝试更新云托管服务到最新版,可能会修复一些Docker环境方面的问题。

联系技术支持:如果以上方法仍然无法解决问题,可以联系微信云托管服务的技术支持,获取更详细的帮助和指导。
总之,解决微信云托管服务部署失败的问题,需要确认Docker环境是否正确,并尝试清理环境、更新服务或联系技术支持等方法。

看错误就是指向harmonize-music-0.0.1.jar的路径不对。
检查你的Dockerfile 是在项目的根目录下创建的吗。
其次,你的项目中的harmonize-music-0.0.1.jar包是否生成了呢,
再次,你可以像官网一样配置,匹配jar文件即可,不用指定具体的jar文件:

COPY --from=build /app/target/*.jar .


参考GPT和自己的思路,根据报错信息 "COPY failed: stat /var/lib/docker/overlay2/cd8ff45438c1ea597a25bff2d3f5741376b496ebbd6b40f7688a07221c8cc9a3/merged/app/target/harmonize-music-0.0.1.jar: no such file or directory",似乎是在 COPY 操作时无法找到指定的文件。

可能的原因是在 Dockerfile 中执行 mvn 命令打包后,target 目录下没有生成指定的 JAR 包文件,导致 COPY 操作无法找到。

建议检查以下事项:

1 确认在本地使用 mvn 命令打包后,target 目录下是否存在 harmonize-music-0.0.1.jar 文件。如果不存在,可能需要检查代码和配置是否有问题。

2 确认 Dockerfile 中 COPY 操作的路径和文件名是否正确。例如,确认源文件路径是否与容器中的路径匹配。

3 确认 Dockerfile 中指定的基础镜像是否存在问题,可能需要更换基础镜像或者添加更多的依赖包。

4 如果以上方法都没有解决问题,可以尝试重新构建 Docker 镜像并重新部署应用程序。

dockerfile 挂载可能目录错误是下 -v vol相关的资料

根据报错信息,似乎是在复制文件时出现了问题,找不到目标文件。可能的原因是您的应用程序构建/打包出现了问题,导致没有生成/找不到目标文件 harmonize-music-0.0.1.jar。

建议您重新构建/打包应用程序,并确保目标文件 harmonize-music-0.0.1.jar 存在于指定的目录下。您可以在本地测试并确保应用程序可以正常运行,然后再尝试将其部署到微信云托管服务上。如果问题仍然存在,请尝试重新创建一个微信云托管实例,并确保按照官方文档的指导进行操作。