准备工作

环境:

  • linux环境或mac,不要用windows
  • jdk 8
  • maven 3.0
  • docker

对docker一无所知的看docker教程

创建一个springboot工程

引入web的起步依赖,创建一个 Controler:

  1. @SpringBootApplication
  2. @RestController
  3. public class SpringbootWithDockerApplication {
  4.  
  5. @RequestMapping("/")
  6. public String home() {
  7. return "Hello Docker World";
  8. }
  9. public static void main(String[] args) {
  10. SpringApplication.run(SpringbootWithDockerApplication.class, args);
  11. }
  12. }

  

将springboot工程容器化

Docker有一个简单的dockerfile文件作为指定镜像的图层。让我们先创建一个 dockerFile文件:

  1. src/main/docker/Dockerfile:
  2.  
  3. FROM frolvlad/alpine-oraclejdk8:slim
  4. VOLUME /tmp
  5. ADD springboot-with-docker-0.0.1-SNAPSHOT.jar app.jar
  6. RUN sh -c 'touch /app.jar'
  7. ENV JAVA_OPTS=""
  8. ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]

  

我们通过maven 构建docker镜像。

在maven的pom目录,加上docker镜像构建的插件

  1. <properties>
  2. <docker.image.prefix>springio</docker.image.prefix>
  3. </properties>
  4. <build>
  5. <plugins>
  6. <plugin>
  7. <groupId>com.spotify</groupId>
  8. <artifactId>docker-maven-plugin</artifactId>
  9. <version>0.4.11</version>
  10. <configuration>
  11. <imageName>${docker.image.prefix}/${project.artifactId}</imageName>
  12. <dockerDirectory>src/main/docker</dockerDirectory>
  13. <resources>
  14. <resource>
  15. <targetPath>/</targetPath>
  16. <directory>${project.build.directory}</directory>
  17. <include>${project.build.finalName}.jar</include>
  18. </resource>
  19. </resources>
  20. </configuration>
  21. </plugin>
  22. </plugins>
  23. </build>

  

注意:${docker.image.prefix} 为你在 docker官方仓库的用户名,如果你不需要上传镜像,随便填。

通过maven 命令:

第一步:mvn clean

第二步: mvn package docker:bulid ,如下:

  1. Step 2/6 : VOLUME /tmp
  2. —> Running in a98be3878053
  3. —> 8286e98b54c5
  4. Removing intermediate container a98be3878053
  5. Step 3/6 : ADD springboot-with-docker-0.0.1-SNAPSHOT.jar app.jar
  6. —> c6ce13e50bbd
  7. Removing intermediate container a303a3058869
  8. Step 4/6 : RUN sh -c touch /app.jar
  9. —> Running in cf231afe700e
  10. —> 9a0ec8936c00
  11. Removing intermediate container cf231afe700e
  12. Step 5/6 : ENV JAVA_OPTS “”
  13. —> Running in e192597fc881
  14. —> 2cb0d73bbdb0
  15. Removing intermediate container e192597fc881
  16. Step 6/6 : ENTRYPOINT sh -c java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar
  17. —> Running in ab85f53fcdd8
  18. —> 60fdb5c61692
  19. Removing intermediate container ab85f53fcdd8
  20. Successfully built 60fdb5c61692
  21. [INFO] Built forezp/springboot-with-docker
  22. [INFO] ————————————————————————
  23. [INFO] BUILD SUCCESS
  24. [INFO] ————————————————————————
  25. [INFO] Total time: 01:45 min
  26. [INFO] Finished at: 2017-04-19T05:37:44-07:00
  27. [INFO] Final Memory: 19M/48M
  28. [INFO] ————————————————————————

  

镜像构建成功。查看镜像:

  1. docker images

显示:

  1. forezp/springboot-with-docker latest 60fdb5c61692 About a minute ago 195 MB

  

启动镜像:

  1. $ docker run -p 8080:8080 -t forezp/springboot-with-docker

  

打开浏览器访问 localhost:8080;浏览器显示:Hello Docker World。 
说明docker 的springboot工程已部署。

停止镜像:

  1. docker stop 60fdb5c61692

  

删除镜像:

  1. docker rm 60fdb5c61692

  

源码来源

Spring Boot教程(十一) springboot程序构建一个docker镜像的更多相关文章

  1. springboot程序构建一个docker镜像(十一)

    准备工作 环境: linux环境或mac,不要用windows jdk 8 maven 3.0 docker 对docker一无所知的看docker教程. 创建一个springboot工程 引入web ...

  2. spring boot 教程(一) 构建我的第一个Spring boot

    Spring Boot特点 1. 创建独立的Spring应用程序 2. 嵌入的Tomcat,无需部署WAR文件 3. 简化Maven配置 4. 自动配置Spring 5. 提供生产就绪型功能,如指标, ...

  3. Spring Boot(十一)Redis集成从Docker安装到分布式Session共享

    一.简介 Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API,Redis也是技术领域使用最为广泛的存储中间件,它是 ...

  4. DOCKER - 构建一个docker镜像并跑起来

    一.有个基础镜像 1.基础镜像的选择 当前市场有众多可选择的基础docker镜像,可参考: https://blog.csdn.net/nklinsirui/article/details/80967 ...

  5. 程序员DD 《Spring boot教程系列》补充

    最近在跟着程序员DD的Spring boot教程系列学习Spring boot,由于年代原因,Spring boot已经发生了一些变化,所以在这里进行一些补充. 补充的知识大多来自评论区,百度,Sta ...

  6. spring boot入门笔记 (一) - 一个简单的说明+一个案例

    spring boot 简化开发:把平时开发者最常用的到一些步骤,按照开发者的习惯,把能包装的就包装成一些固有的工具类(就比如我们之前连接数据库时常写的DB工具类).当然,是在原有的spring框架的 ...

  7. Spring Boot教程(十六)属性配置文件详解(1)

    相信很多人选择Spring Boot主要是考虑到它既能兼顾Spring的强大功能,还能实现快速开发的便捷.我们在Spring Boot使用过程中,最直观的感受就是没有了原来自己整合Spring应用时繁 ...

  8. Spring Boot 揭秘与实战 自己实现一个简单的自动配置模块

    文章目录 1. 实战的开端 – Maven搭建 2. 参数的配置 - 属性参数类 3. 真的很简单 - 简单的服务类 4. 自动配置的核心 - 自动配置类 5. spring.factories 不要 ...

  9. spring boot / cloud (三) 集成springfox-swagger2构建在线API文档

    spring boot / cloud (三) 集成springfox-swagger2构建在线API文档 前言 不能同步更新API文档会有什么问题? 理想情况下,为所开发的服务编写接口文档,能提高与 ...

随机推荐

  1. ubuntu 个人常用命令

    重启命令 :     1.reboot     2.shutdown -r now 立刻重启    3.shutdown -r 10 过10分钟自动重启    4.shutdown -r 20:35 ...

  2. qt在tableview中绘制图片

    void ItemModelDeletage::paint(QPainter *painter, const QStyleOptionViewItem &option, const QMode ...

  3. 【AST篇】教你如何编写 Eslint 插件

    前言 虽然现在已经有很多实用的 ESLint 插件了,但随着项目不断迭代发展,你可能会遇到已有 ESLint 插件不能满足现在团队开发的情况.这时候,你需要自己来创建一个 ESLint 插件. 本文我 ...

  4. 60. Permutation Sequence (JAVA)

    The set [1,2,3,...,n] contains a total of n! unique permutations. By listing and labeling all of the ...

  5. iOS崩溃分析

    崩溃的分析 最近修复了一些iOS项目的崩溃,想分析总结一下这些崩溃的原因,以及预防.崩溃的原因一般有下面几种: 内存访问错误(这个出现的比较多,原因多种多样) 非法指令的执行(超出权限范围内的指令) ...

  6. kali 下安装 vmtools

    网上的教程都是默认路径下的,kali是定制版本的,路径不同,所以首先要找到media下安装包的路径,然后进入该路下,将安装包复制到想要的路径下,并解压缩到想要的路径下,剩下的就跟网上的差不多了,即找到 ...

  7. phpstorm 快捷键2

    1.跨平台. 2.对PHP支持refactor功能.支持断点调试,支持 Symfony2 和 Yii 的 MVC 视图 3.自动生成phpdoc的注释,非常方便进行大型编程. 4.内置支持Zencod ...

  8. 使用MEMCACHED实现缓存

    什么是memcached Memcached是一个自由开源的,高性能,分布式内存对象缓存系统. Memcached是以LiveJournal旗下Danga Interactive公司的Brad Fit ...

  9. 一、H5(移动端)前端使用input type=file 上传图片,调用相机和相册

    一.H5(移动端)前端使用input type=file 上传图片,调用相机和相册

  10. neutron网络服务部署

    控制节点执行 #第一步 登陆数据库 mysql -u root -p #导入neutron这个库 CREATE DATABASE neutron; #创建neutron这个用户和密码,并允许本地登陆和 ...