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

皮皮踢

我是前端开发,被部署的问题折腾了很久,在网上也没有找到有用的信息,所以发帖求助。 背景:我用若依前后端分离版([若依前后端分离-Vue](https://link.segmentfault.com/?enc=ExcagbpJSs9nvTRYBusVHQ%3D%3D.yFZAKYo7wAlAu0XtSMxJdyZcEoNFmrKvoGRe14oKjcb1LV7r2MM6%2FzCNI7vLx182))做了一个简单后台,因为没有后端基础,所以想借助微信云托管来进行服务部署,目前这个云托管服务也是免费的。 微信云托管是自动部署的,我用若依部署老是失败,问了他们客服,客服说云托管是基于docker的,所以项目必须是以容器的方式部署,建议我先尝试本地镜像构建。然后我安装了相关工具在本地调试。 因为若依后台本身没有Dockerfile,所以我把微信云托管的示例([部署模板](https://link.segmentfault.com/?enc=%2FSueM8AYCkh8kMN6FwsUpg%3D%3D.uHxWk5R92NhhibMHG6bPwIRsrVJdKIkiHVm6vmW%2BMW%2Fq57D1mWbF1vXu8aoHL0claxg7bXlrYKsbafse7uyr%2FszzubrCaxpShwY3zJ4iYkQ%3D))项目中的Dockerfile和setting.xml直接拷贝到了若依的根目录,然后按照微信提供的调试文档([调试文档](https://link.segmentfault.com/?enc=pJyozshoL67iUbKTngwKyw%3D%3D.v%2FGwDgQwh%2FreuVYTdWYazWaiiYPk3qx16cDmEXI9kL7wXUvChXibHjNu13s3AgBBx5vm9HcgtE0eyuVlQGR4Qsep9r9c2lsireYGvikoPxg%3D))来调试若依的这个项目,但是在构建的时候总是报这个错,![image.png](https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241127/b8b1e45939b62ac7cac6863a8d2dad29.png)目前卡着这里,不知道怎么处理了,希望有大佬能够提供帮助,非常感谢! 这是项目根目录: ![image.png](https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241127/c58344b774fba9a019895783fbc2d8a8.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](https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241127/586bad8d184286a2d61f1f87f8aac9b8.png) ![image.png](https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241127/7ff9c77db4cb629feb05e8c7115edcc3.png) ![image.png](https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241127/5d334b5d8bedbe42f0e67ac1fb4cf51d.png) 新的错误好像是说找不到pom.xml,不过源码的每个木块是有对应文件的,是否是Dockerfile里的配置不够呢? 补充:@汝何不上九霄,镜像已经启动成功: ![image.png](https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241127/f5f1da0987e5d9919460027919519d06.png) 不过我试着接口连接27082,27081,8080,都无法访问接口。 我直接通过这里启动,可以通过8080端口访问接口,但是这里启动好像和在不在容器没有关系,因为,日志产生新的日志,请问我应该怎么正确访问接口。 ![image.png](https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241127/75eb33704ca68289dd989f79fdd38de0.png) 配置文件截图: Dockerfile.development截图: ![image.png](https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241127/4d227419e42d82516c3c22d7823456eb.png) docker-compose.yml截图: ![image.png](https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241127/473b1c7273b2ef28f5256e790314f588.png) 修改Dockerfile.developent后构建镜像: ![image.png](https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241127/a1f6ff2c2170e8220df420f5f46c9c5b.png) 启动镜像: ![image.png](https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241127/ead7c8a45963135dd3a44f97e5b353f2.png) docker客户端: ![image.png](https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241127/93f685fb15801faa48f7450dc81e75ab.png) 接口请求用8080端口,请求超时;请求用端口51747返回404 补充信息: ![image.png](https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241127/75e0f674c1ffe54e76e7fada809b0510.png) start之前是这样的: ![image.png](https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241127/88522b7b8142fdf7d222da123c643976.png) ![image.png](https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241127/9e1d7eba229364acad96f1e631eded1c.png) ![image.png](https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241127/85dd270ec1dc589aa667936c93da0e39.png) ![image.png](https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241127/a67d7a8ee7aeb33215c6ec49bb3aa1ca.png) :80的端口没有搜索到,全局搜索只有这个文件有8080: ![image.png](https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241127/ded6971923cd5a1c8b0820483c55eb07.png) 这是我start的过程。然后有若依有一个对应的前端vue项目,我启动了,访问地址是用8080的端口: ![image.png](https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241127/29c52468ec9b45a86535f72f3da1b0be.png) 访问前端项目,接口会报超时的错误。大概是这样一个过程。

阅读量:18

点赞量:0

问AI
你照我这样改应该就没问题了,这个打完包,我测试了一下,没什么太大的问题,你可以试试 # 二开推荐阅读[如何提高项目构建效率](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"] 你搞乱了,你本地起了docker服务对吧,我看看你访问的地址,然后如果你是想访问本地镜像就截图给我看这个,而且你服务要先remove或者down 重启一下,配置才能生效 "image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241127/b754f40eea6839706b18356e06b88736.png)