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

作者站长头像
站长
· 阅读数 4

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

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

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

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

这是项目根目录:若依项目怎么通过docker容器打包镜像并部署到微信云托管?这是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提供的方法有了进展,不过后面还有新的问题,截图补充:若依项目怎么通过docker容器打包镜像并部署到微信云托管?若依项目怎么通过docker容器打包镜像并部署到微信云托管?若依项目怎么通过docker容器打包镜像并部署到微信云托管?新的错误好像是说找不到pom.xml,不过源码的每个木块是有对应文件的,是否是Dockerfile里的配置不够呢?

补充:@汝何不上九霄,镜像已经启动成功:若依项目怎么通过docker容器打包镜像并部署到微信云托管?不过我试着接口连接27082,27081,8080,都无法访问接口。

我直接通过这里启动,可以通过8080端口访问接口,但是这里启动好像和在不在容器没有关系,因为,日志产生新的日志,请问我应该怎么正确访问接口。若依项目怎么通过docker容器打包镜像并部署到微信云托管?

配置文件截图:Dockerfile.development截图:若依项目怎么通过docker容器打包镜像并部署到微信云托管?docker-compose.yml截图:若依项目怎么通过docker容器打包镜像并部署到微信云托管?

修改Dockerfile.developent后构建镜像:若依项目怎么通过docker容器打包镜像并部署到微信云托管?启动镜像:若依项目怎么通过docker容器打包镜像并部署到微信云托管?docker客户端:若依项目怎么通过docker容器打包镜像并部署到微信云托管?

接口请求用8080端口,请求超时;请求用端口51747返回404

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

start之前是这样的:若依项目怎么通过docker容器打包镜像并部署到微信云托管?若依项目怎么通过docker容器打包镜像并部署到微信云托管?若依项目怎么通过docker容器打包镜像并部署到微信云托管?若依项目怎么通过docker容器打包镜像并部署到微信云托管?

:80的端口没有搜索到,全局搜索只有这个文件有8080:若依项目怎么通过docker容器打包镜像并部署到微信云托管?

这是我start的过程。然后有若依有一个对应的前端vue项目,我启动了,访问地址是用8080的端口:若依项目怎么通过docker容器打包镜像并部署到微信云托管?

访问前端项目,接口会报超时的错误。大概是这样一个过程。

回复
1个回答
avatar
test
2024-06-25

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


# 二开推荐阅读[如何提高项目构建效率](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 重启一下,配置才能生效

answer image

回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容