我是前端开发,被部署的问题折腾了很久,在网上也没有找到有用的信息,所以发帖求助。
背景:我用若依前后端分离版(若依前后端分离-Vue)做了一个简单后台,因为没有后端基础,所以想借助微信云托管来进行服务部署,目前这个云托管服务也是免费的。
微信云托管是自动部署的,我用若依部署老是失败,问了他们客服,客服说云托管是基于docker的,所以项目必须是以容器的方式部署,建议我先尝试本地镜像构建。然后我安装了相关工具在本地调试。
因为若依后台本身没有Dockerfile,所以我把微信云托管的示例(部署模板)项目中的Dockerfile和setting.xml直接拷贝到了若依的根目录,然后按照微信提供的调试文档(调试文档)来调试若依的这个项目,但是在构建的时候总是报这个错,目前卡着这里,不知道怎么处理了,希望有大佬能够提供帮助,非常感谢!
这是项目根目录:
这是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提供的方法有了进展,不过后面还有新的问题,截图补充:
新的错误好像是说找不到pom.xml,不过源码的每个木块是有对应文件的,是否是Dockerfile里的配置不够呢?
你照我这样改应该就没问题了,这个打完包,我测试了一下,没什么太大的问题,你可以试试
# 二开推荐阅读[如何提高项目构建效率](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"]
你的 settings.xml 在 /app/ 下面,mvn 是在 / 下跑的,所以找不到 settings.xml .
可以试试把路径写全, mvn -s /app/settings.xml -f ...
看起来你遇到的问题是在构建 Docker 镜像时出现了错误。但是,由于你没有提供具体的错误信息,我可能需要一些额外的信息才能提供更精确的帮助。以下是我根据你提供的信息给出的一些可能的解决方案:
希望这些建议能对你有所帮助。如果你能提供更详细的信息,我可能会提供更具体的解决方案。
本文向大家介绍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容器?