千家信息网

Docker容器化spring boot应用的示例分析

发表于:2025-02-09 作者:千家信息网编辑
千家信息网最后更新 2025年02月09日,这篇文章主要为大家展示了"Docker容器化spring boot应用的示例分析",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"Docker容器化sprin
千家信息网最后更新 2025年02月09日Docker容器化spring boot应用的示例分析

这篇文章主要为大家展示了"Docker容器化spring boot应用的示例分析",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"Docker容器化spring boot应用的示例分析"这篇文章吧。

前置条件

容器化spring boot应用所需环境:

  1. jdk 1.8 +

  2. maven 3.0 +

我们的需求是:使用maven打包,将spring boot应用制作成docker镜像并上传到docker hub。在其他机器上,可以直接docker pull并运行容器。

创建spring boot应用

spring boot 包结构为:

└── src  └── main    └── java      └── me        └── ithakar

创建spring boot Application主类,src/main/java/me/ithakar/Application.java

package me.ithakar;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;@SpringBootApplication@RestControllerpublic class Application {  @RequestMapping("/")  public String home() {    return "docker app running";  }  public static void main(String[] args) {    SpringApplication.run(Application.class, args);  }}

pom.xml:

  4.0.0  me.ithakar  docker-app  0.1.0      org.springframework.boot    spring-boot-starter-parent    1.5.3.RELEASE        1.8              org.springframework.boot      spring-boot-starter-web              org.springframework.boot      spring-boot-starter-test      test                          org.springframework.boot        spring-boot-maven-plugin            

打包并启动应用

mvn package && java -jar target/docker-app-0.1.0.jar

访问 http://localhost:8080/ ,获得响应:

docker app running

则spring boot应用启动成功

创建Dockerfile文件

Dockerfile是一个文本文件,类似shell脚本,其内包含了一条条的指令。每一条指令的内容,就是描述对应的镜像层应当如何构建。

Dockerfile位置:src/main/docker/Dockerfile

FROM frolvlad/alpine-oraclejdk8:slim VOLUME /tmp ADD docker-app-0.1.0.jar app.jar RUN sh -c 'touch /app.jar' ENV JAVA_OPTS="" ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]
  1. FROM 命令指定基础镜像,以一个镜像为基础,在其上进行定制。在这里我们的基础镜像是frolvlad/alpine-oraclejdk8:slim。

  2. VOLUME 定义匿名卷。对于可能需要操作数据库类需要保存动态数据的应用,其数据文件应该保存在主句的卷,而不是容器的储存层。在这里我们是将其挂载在了/tmp这个位置,从而保证了容器的无状态化。

  3. ADD 命令是较高级的复制命令,将jar包复制到/app.jar

  4. ENTRYPOINT 容器运行后默认执行的命令

添加maven docker插件

docker maven插件是为了方便java开发者,由spotify公司开发的一款maven插件。添加以下代码至pom.xml文件中。

  ithaka            com.spotify      docker-maven-plugin      0.4.11              ${docker.image.prefix}/${project.artifactId}:${project.version}        src/main/docker        true                              /            ${project.build.directory}            ${project.build.finalName}.jar                              

注意,docker.image.prefix中的ithaka为我的docker hub 账户,使用时将其换成自己的

使用maven命令打包应用、构建docker镜像并上传镜像到docker hub:

mvn package docker:build -DpushImage

此时我们将得到一个报错:

[ERROR] Failed to execute goal com.spotify:docker-maven-plugin:0.4.11:build (default-cli) on project docker-app: Exception caught: denied: requested access to the resource is denied

这是因为我们在maven中push时,并没有包含docker的用户信息,所以权限校验失败。

解决方法为,在maven全局setting.xml配置中,添加docker hub server信息

    docker-hub    ithaka    密码          邮箱    

在pom.xml中的docker-maven-plugi插件中,指定server

  com.spotify  docker-maven-plugin      docker-hub  

再继续执行

mvn package docker:build -DpushImage

出现

The push refers to a repository [docker.io/ithaka/docker-app]
8c02854cd300: Pushed
a03c3b5dbe04: Pushed
8018d52798bb: Pushed
1e6468b956ae: Pushed
3fb66f713c9f: Pushed

0.0.1: digest: sha256:63456345745755577c19103dcf4838894e34d45a68a1ec23b2f69d6f059 size: 1375

即为上传docker hub成功。

启动docker容器

在另外一台机器上,执行命令

docker run -p 8080:8080 -t ithaka/docker-app

访问http://ip:8080/ ,获得响应:

docker app running

docker应用启动成功

以上是"Docker容器化spring boot应用的示例分析"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

应用 容器 命令 镜像 内容 插件 文件 示例 分析 成功 基础 数据 篇文章 位置 信息 指令 机器 学习 帮助 开发 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 网络数据库模板 软件开发 开题报告模板 数据库怎么制作电子名片 王牌斗地主服务器无法进去 怎样复制整个表数据库 吴中区提供网络技术包括什么 软件开发后还需要做什么 网络安全法承担的义务 深圳系统软件开发价钱是多少 关于网络安全工作部署要求 程序运行导致数据库占用率过高 成研所通信设备软件开发 永久60灰烬使者服务器 竹山正规软件开发服务保障 idear中链接数据库 网络安全法自几几年起实行 云鹏万里互联网科技有限公司 凝聚网络安全宣传 黄油服务器是什么意思 煜珩网络技术有限公司 应用软件开发起名 深圳系统软件开发价钱是多少 网络安全培训教材实例 淘宝数据库的e-r图 学会查数据库要多久 计算机网络技术的应用设计目的 九江软件开发公司推荐 浙江征途网络技术有限公司旗下 中国网络安全黑客排名 服务器管理员联系方式
0