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

若依项目怎么通过docker容器打包镜像并部署到微信云托管?

秦昊穹
2023-11-02

我是前端开发,被部署的问题折腾了很久,在网上也没有找到有用的信息,所以发帖求助。

背景:我用若依前后端分离版(若依前后端分离-Vue)做了一个简单后台,因为没有后端基础,所以想借助微信云托管来进行服务部署,目前这个云托管服务也是免费的。

微信云托管是自动部署的,我用若依部署老是失败,问了他们客服,客服说云托管是基于docker的,所以项目必须是以容器的方式部署,建议我先尝试本地镜像构建。然后我安装了相关工具在本地调试。

因为若依后台本身没有Dockerfile,所以我把微信云托管的示例(部署模板)项目中的Dockerfile和setting.xml直接拷贝到了若依的根目录,然后按照微信提供的调试文档(调试文档)来调试若依的这个项目,但是在构建的时候总是报这个错,image.png目前卡着这里,不知道怎么处理了,希望有大佬能够提供帮助,非常感谢!

这是项目根目录:
image.png
这是Dockerfile,从部署模板copy来:

# 二开推荐阅读[如何提高项目构建效率](https://developers.weixin.qq.com/miniprogram/dev/wxcloudrun/src/scene/build/speed.html)# 选择构建用基础镜像。如需更换,请到[dockerhub官方仓库](https://hub.docker.com/_/java?tab=tags)自行选择后替换。FROM maven:3.6.0-jdk-8-slim as build# 指定构建过程中的工作目录WORKDIR /# 将src(原本是src,这里改为了ruoyi-admin)目录下所有文件,拷贝到工作目录中src目录下(.gitignore/.dockerignore中文件除外)COPY ruoyi-admin /app/src# 将pom.xml文件,拷贝到工作目录下COPY settings.xml pom.xml /app/# 执行代码编译命令# 自定义settings.xml, 选用国内镜像源以提高下载速度RUN mvn -s settings.xml -f /app/pom.xml clean package# 选择运行时基础镜像FROM alpine:3.13# 安装依赖包,如需其他依赖包,请到alpine依赖包管理(https://pkgs.alpinelinux.org/packages?name=php8*imagick*&branch=v3.13)查找。# 选用国内镜像源以提高下载速度RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.tencent.com/g' /etc/apk/repositories \    && apk add --update --no-cache openjdk8-jre-base \    && rm -f /var/cache/apk/*# 容器默认时区为UTC,如需使用上海时间请启用以下时区设置命令# RUN apk add tzdata && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo Asia/Shanghai > /etc/timezone# 使用 HTTPS 协议访问容器云调用证书安装RUN apk add ca-certificates# 指定运行时的工作目录WORKDIR /app# 将构建产物jar包拷贝到运行时目录中COPY --from=build /app/target/*.jar .# 暴露端口# 此处端口必须与「服务设置」-「流水线」以及「手动上传代码包」部署时填写的端口一致,否则会部署失败。EXPOSE 8080# 执行启动命令.# 写多行独立的CMD命令是错误写法!只有最后一行CMD命令会被执行,之前的都会被忽略,导致业务报错。# 请参考[Docker官方文档之CMD命令](https://docs.docker.com/engine/reference/builder/#cmd)CMD ["java", "-jar", "/app/springboot-wxcloudrun-1.0.jar"]

setting.xml没有任何改动。

按照@fefe提供的方法有了进展,不过后面还有新的问题,截图补充:
image.png
image.png
image.png
新的错误好像是说找不到pom.xml,不过源码的每个木块是有对应文件的,是否是Dockerfile里的配置不够呢?

共有3个答案

汪坚
2023-11-02

你照我这样改应该就没问题了,这个打完包,我测试了一下,没什么太大的问题,你可以试试

# 二开推荐阅读[如何提高项目构建效率](https://developers.weixin.qq.com/miniprogram/dev/wxcloudrun/src/scene/build/speed.html)# 选择构建用基础镜像。如需更换,请到[dockerhub官方仓库](https://hub.docker.com/_/java?tab=tags)自行选择后替换。FROM maven:3.6.0-jdk-8-slim as build# 指定构建过程中的工作目录WORKDIR /app# 将src(原本是src,这里改为了ruoyi-admin)目录下所有文件,拷贝到工作目录中src目录下(.gitignore/.dockerignore中文件除外)COPY . /app/# 执行代码编译命令RUN cd /app && mvn clean package -Dmaven.test.skip=true# 选择运行时基础镜像FROM alpine:3.13# 安装依赖包,如需其他依赖包,请到alpine依赖包管理(https://pkgs.alpinelinux.org/packages?name=php8*imagick*&branch=v3.13)查找。# 选用国内镜像源以提高下载速度RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.tencent.com/g' /etc/apk/repositories \    && apk add --update --no-cache openjdk8-jre-base \    && rm -f /var/cache/apk/*# 容器默认时区为UTC,如需使用上海时间请启用以下时区设置命令# RUN apk add tzdata && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo Asia/Shanghai > /etc/timezone# 使用 HTTPS 协议访问容器云调用证书安装RUN apk add ca-certificates# 指定运行时的工作目录WORKDIR /app# 将构建产物jar包拷贝到运行时目录中COPY --from=build /app/ruoyi-admin/target/ruoyi-admin.jar .# 暴露端口# 此处端口必须与「服务设置」-「流水线」以及「手动上传代码包」部署时填写的端口一致,否则会部署失败。EXPOSE 8080# 执行启动命令.# 写多行独立的CMD命令是错误写法!只有最后一行CMD命令会被执行,之前的都会被忽略,导致业务报错。# 请参考[Docker官方文档之CMD命令](https://docs.docker.com/engine/reference/builder/#cmd)CMD ["java", "-jar", "/app/ruoyi-admin.jar"]
冯沛
2023-11-02

你的 settings.xml 在 /app/ 下面,mvn 是在 / 下跑的,所以找不到 settings.xml .

可以试试把路径写全, mvn -s /app/settings.xml -f ...

唐裕
2023-11-02

看起来你遇到的问题是在构建 Docker 镜像时出现了错误。但是,由于你没有提供具体的错误信息,我可能需要一些额外的信息才能提供更精确的帮助。以下是我根据你提供的信息给出的一些可能的解决方案:

  1. 检查你的网络设置:构建 Docker 镜像需要能够访问 Docker Hub 和其他相关的网络资源。如果你的网络有任何限制,可能会导致构建失败。
  2. 检查你的 Dockerfile:虽然你提供了 Dockerfile 的内容,但我没有看到任何明显的问题。然而,由于错误信息没有被提供,我无法确定问题是否出在这里。你可能需要检查你的 Dockerfile 中的每一行,看看是否有任何错误或不一致。
  3. 检查你的构建环境:确保你的构建环境(例如 Maven、Docker 等)已经正确安装,并且版本与项目的要求相符。
  4. 尝试在不同的环境中构建:你可以尝试在不同的环境中构建,例如在你的本地机器上或者在一个独立的 CI/CD 环境中。这可以帮助你确定问题是否与你的具体环境有关。
  5. 查看更详细的错误信息:如果可能的话,你应该尝试获取更详细的错误信息。这可能包括 Docker 的日志文件、Maven 的构建输出、或者其他相关的错误消息。

希望这些建议能对你有所帮助。如果你能提供更详细的信息,我可能会提供更具体的解决方案。

 类似资料:
  • 本文向大家介绍spring boot项目生成docker镜像并完成容器部署的方法步骤,包括了spring boot项目生成docker镜像并完成容器部署的方法步骤的使用技巧和注意事项,需要的朋友参考一下 一、问题产生    把spring boot项目生成的jar打成docker镜像并生成docker容器完成部署是比较简单方便的部署方式,而且部署过程很少会出错。 二、部署步骤 1.利用maven或

  • 本文向大家介绍Docker镜像+nginx 部署 vue 项目的方法,包括了Docker镜像+nginx 部署 vue 项目的方法的使用技巧和注意事项,需要的朋友参考一下 一、打包vue项目   在开发完的vue项目输入如下命名,打包生成dist文件夹   此时根目录会多出一个文件夹:dist文件夹,里面就是我们要发布的东西。   如果将该dist目录整个传到服务器上,部署成静态资源站点就能直接访

  • 本文向大家介绍详解Docker 容器基础系统镜像打包,包括了详解Docker 容器基础系统镜像打包的使用技巧和注意事项,需要的朋友参考一下 因为容器本身是共享宿主操作系统内核,所以容器基础系统镜像包本身就是一个标准的 Linux rootfs + 用户自定义的工具。根据这个思路,我们就可以构建一个自己的容器基础系统镜像。 构建标准的 Linux rootfs 的方式有很多种方法,Redhat、De

  • 使用dockerfile打包太麻烦了!比如我想自己搭建一套php的开发环境,做成镜像,以后随时可用。并且我习惯使用堡塔作为面板工具。如果使用dockerfile的化,成本就太高了。 使用commit或者import/export的方式会导致镜像非常大! 是否有其他高效的打包方式可以,将容器打包成镜像?

  • 请教一下 怎么将 lxc-create 创建的容器 打包成一个镜像? 如何将一个 lxc打包成一个 镜像,然后如何 用一个 镜像创建容器呢,有模板、配置文件、容器名等参数可用

  • 问题 是否有一种方法可以将本地计算机上的docker容器部署到CloudFoundry?如果没有,那么有什么方法可以安全地将容器寄存到CF的某个地方来获取它们呢? CloudFoundry是否能够运行作为Python烧瓶应用程序的docker容器?