前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Docker化Spring Boot3应用:从镜像构建到部署

Docker化Spring Boot3应用:从镜像构建到部署

作者头像
修己xj
发布2024-05-22 20:12:37
2280
发布2024-05-22 20:12:37
举报
文章被收录于专栏:修己xj修己xj

随着容器化技术的发展,越来越多的应用采用了容器化部署的方式。容器化部署极大地减少了因部署环境不同带来的差异,实现了一次构建、随处运行的效果。此外,容器化还具有版本管理、快速启动、持续集成等优点。今天,我们将介绍如何在Linux上通过命令行构建和运行Spring Boot 3服务的镜像。

基础镜像构建

我们的服务采用的jdk 版本为21,spring boot版本为3.1.0,首先我们基于ubuntu来构建一个jdk版本为21的基础镜像。其Dockerfile 文件内容如下:

Dockerfile

代码语言:javascript
复制
# 基础镜像
FROM ubuntu:22.04

# 维护者
MAINTAINER xj

# 拷贝文件到容器(自动解压,解压完目录为jdk-21.0.2)
ADD ./openjdk-21.0.2_linux-x64_bin.tar.gz /usr/local/

# 安装unzip
RUN apt-get update \

&& apt-get install unzip

# 设置JAVA_HOME
ENV JAVA_HOME /usr/local/jdk-21.0.2

ENV PATH $PATH:$JAVA_HOME/bin

将我们的jdk文件openjdk-21.0.2_linux-x64_bin.tar.gz 拷贝到Dockerfile的同级目录下,执行以下命令进行基础镜像的构建:

代码语言:javascript
复制
docker build -t xj/jdk:21.0.2 .

构建完成后我们会在服务器上使用以下命令看到我们刚刚构建的镜像

代码语言:javascript
复制
docker images | grep jdk

使用Maven打包服务

在本地打包我们spring boot3服务,我们此处为了方便修改服务中的静态文件,将所有的静态文件打包到了jar包的外部,家人可以翻阅我们之前的文章 深入探讨Maven打包:打造精致的Zip包,打包后snowflake-0.0.1.zip文件的目录结果如下:

构建服务镜像

基于我们刚刚创建好的jdk21的基础镜像构建我们的服务镜像,其Dockerfile 文件内容如下:

Dockerfile

代码语言:javascript
复制

# 基础镜像
FROM xj/jdk:21.0.2

# 维护者
MAINTAINER xj

# 环境变量
ENV TZ=Asia/Shanghai \
    SERVER_DIR=/home/app/

RUN mkdir -p $SERVER_DIR \
&& chmod -R 777 $SERVER_DIR 

# 拷贝文件到容器
ADD ./snowflake-0.0.1.zip $SERVER_DIR

RUN  unzip /home/app/snowflake-0.0.1.zip -d $SERVER_DIR  \

&& chmod +x /home/app/start.sh

# 设置工作目录
WORKDIR $SERVER_DIR

# 镜像暴露的端口号
EXPOSE 8000

CMD ["/home/app/start.sh","run"]

将我们打包后的zip文件snowflake-0.0.1.zip 拷贝到Dockerfile的同级目录下,执行以下命令进行基础镜像的构建:

代码语言:javascript
复制
docker build -t xj/snowflake:1.0.0 .

构建成功后我们可以使用以下命令看到构建后的镜像

代码语言:javascript
复制
docker images | grep snowflake

使用docker-compose 部署服务

首先在服务器上创建一个部署目录snowflake,在该目录下创建docker-compose.yml文件,内容如下:

docker-compose.yml

代码语言:javascript
复制
version: '3.3'
services:
  snowflake:
    image: xj/snowflake:1.0.0
    container_name: xj-snowflake
    restart: always
    ports:
      - 8000:8000
    volumes:
      - ./data:/home/app

在部署目录下创建挂载目录data,将我们的打包后的服务文件snowflake-0.0.1.zip拷贝到挂载目录中并解压。

我们此处是将整个部署目录/home/app 挂载到了宿主机,这样我们后续如果需要修改配置文件等一些静态文件的话直接修改,完了重启以下服务就可以了,不用重新构建镜像。

在docker-compose.yml同级目录下使用以下命令启动容器

代码语言:javascript
复制
docker-compose up -d 

如果不出意外的话我们的服务就启动成功了。

注意: 如果我们以前是直接在服务器上部署服务的话大家注意下start.sh启动脚本,一般都是使用nohup后台启动的,而Docker容器中默认的主进程如果退出,容器就会停止运行。所以我们如果使用docker启动服务的话一定要前台启动。

总结

通过以上步骤,我们实现了使用Spring Boot构建Docker镜像并部署的全过程。Docker使得应用的部署变得更加简单和一致,无论是在本地开发环境还是在生产环境,都能保证应用的可靠运行。希望本文对你在Spring Boot和Docker的结合使用上有所帮助。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-05-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 修己xj 微信公众号,前往查看

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

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 基础镜像构建
  • 使用Maven打包服务
  • 构建服务镜像
  • 使用docker-compose 部署服务
  • 总结
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档