前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Docker容器部署SpringBoot项目发布到Docker hub

Docker容器部署SpringBoot项目发布到Docker hub

原创
作者头像
杨不易呀
修改2024-03-30 16:11:45
2161
修改2024-03-30 16:11:45
举报
文章被收录于专栏:杨不易呀

前言

最近搞了个小项目刚刚好部署一下,记录一下部署过程 我这里是这发布Docker hub 如果你没设置为 private 别人是可以拉到的,如果需要私有则直接用Idea进行连接远程服务器docker设置docker一些配置即可,本片文章就不说这个.

前置条件 下载 docker desktop 客户端 注册 docker hub 账号 没有的话, 然后进行登录即可

编写Dockerfiler

放在哪里都可以 ADD target jar包地址搞对就行,我这里就默认放在 target 同级别

代码语言:dockerfile
复制
#FROM findepi/graalvm:java17-native
FROM openjdk:17.0.2-oraclelinux8

MAINTAINER Yang Buyi

ENV SERVER_PORT=8090 LANG=C.UTF-8 LC_ALL=C.UTF-8 JAVA_OPTS=""

EXPOSE ${SERVER_PORT}

ADD /target/myproject.jar /app.jar

ENTRYPOINT java -Djava.security.egd=file:/dev/./urandom -Dserver.port=${SERVER_PORT} \
           -jar app.jar \
           -XX:+HeapDumpOnOutOfMemoryError -Xlog:gc*,:time,tags,level -XX:+UseZGC ${JAVA_OPTS}

这段代码是一个简单的 Dockerfile,用于构建一个基于 OpenJDK 17 的 Docker 镜像,运行一个 Java 应用程序。这个应用程序暴露了一个环境变量 SERVER_PORT,可以通过该变量设置应用程序监听的端口。Dockerfile 的主要内容如下:

使用 openjdk:17.0.2-oraclelinux8 作为基础镜像。

设置了维护者信息为 Yang Buyi。

定义了一些环境变量,包括 SERVER_PORT、LANG、LC_ALL 和 JAVA_OPTS。

将本地的 /target/chatgpt-data-app.jar 文件复制到 Docker 镜像中的 /app.jar。

设置了容器启动时的入口命令,使用 java 命令运行 /app.jar,同时指定了一些 Java 虚拟机的参数,如 -XX:+HeapDumpOnOutOfMemoryError、-Xlog:gc*,:time,tags,level 和 -XX:+UseZGC,并且可以通过 ${JAVA_OPTS} 变量传递额外的参数。

需要注意的是,Dockerfile 中使用的 FROM 指令应该只有一个,因此需要移除 FROM findepi/graalvm:java17-native 的部分。

项目 install 打包

主要是用于打包新代码add到容器当中

打开命令行为存在Dockerfiler路进行打包构建镜像

构建
构建
代码语言:linux
复制
# 打包 linux/amd64 镜像
docker buildx build  -f ./Dockerfile  --platform linux/amd64 --load -t  ybyya/myproject:1.2 . 

推送到 本地docker 然后利用 客户端docker 进行push 也可以 用命令 命令直接跟着 --push 或者单独 docker push ybyya/myproject:1.0

解析 :

ybyya 表示 docker hub 你自己账户的用户名

myprojec 表示 一般是项目名称

:1.0 表示 你镜像的版本编号.

后面跟着一个 . 表示构建就完事了;

执行命令, 注意部署的支持环境

由于我是本地macbook pro m1 打包默认为arm架构我的linux服务器为amd架构不兼容则需要buildx进行指定打包环境

执行
执行

打包完毕后可以在本地的 docker desktop 查看到

直接 Push 到Hub 时间可能有点长

push
push

可以前往 https://hub.docker.com/repository 查看你的镜像是否push成功

拉取镜像进行执行

拉取
拉取

tagname 表示你的镜像容器版本号

代码语言:linux
复制
# 拉镜像
docker pull ybyya/myproject:1.0 

# 执行镜像
docker run -d --name myproject -p 8090:8090 ybyya/myproject:1.0 

部署的项目地址: ai.yby6.com

题外话题: 关于mysql小问题容器部署mysql时间不对将服务器时间复制到容器里面解决

代码语言:mysql
复制
docker cp /usr/share/zoneinfo/Asia/Shanghai cmysql:/etc/localtime

最后

本期结束咱们下次再见👋~

🌊 关注我不迷路,如果本篇文章对你有所帮助,或者你有什么疑问,欢迎在评论区留言,我一般看到都会回复的。大家点赞支持一下哟~ 💗

嘻嘻
嘻嘻

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
    • 编写Dockerfiler
      • 项目 install 打包
        • 打开命令行为存在Dockerfiler路进行打包构建镜像
          • 解析 :
        • 执行命令, 注意部署的支持环境
          • 打包完毕后可以在本地的 docker desktop 查看到
          • 直接 Push 到Hub 时间可能有点长
        • 拉取镜像进行执行
        • 最后
        相关产品与服务
        容器服务
        腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档