(转) SpringBoot非官方教程 | 第二十四篇: springboot整合docker
这篇文篇介绍,怎么为 springboot程序构建一个Docker镜像。docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
准备工作
环境:
- linux环境或mac,不要用windows
- jdk 8
- maven 3.0
- docker
对docker一无所知的看docker教程。
创建一个springboot工程
引入web的起步依赖,创建一个 Controler:
@SpringBootApplication
@RestController
public class SpringbootWithDockerApplication { @RequestMapping("/")
public String home() {
return "Hello Docker World";
}
public static void main(String[] args) {
SpringApplication.run(SpringbootWithDockerApplication.class, args);
}
}
将springboot工程容器化
Docker有一个简单的dockerfile文件作为指定镜像的图层。让我们先创建一个 dockerFile文件:
src/main/docker/Dockerfile:
FROM frolvlad/alpine-oraclejdk8:slim
VOLUME /tmp
ADD springboot-with-docker-0.0.1-SNAPSHOT.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" ]
我们通过maven 构建docker镜像。
在maven的pom目录,加上docker镜像构建的插件
<properties>
<docker.image.prefix>springio</docker.image.prefix>
</properties>
<build>
<plugins>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.11</version>
<configuration>
<imageName>${docker.image.prefix}/${project.artifactId}</imageName>
<dockerDirectory>src/main/docker</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
</plugins>
</build>
注意:${docker.image.prefix} 为你在 docker官方仓库的用户名,如果你不需要上传镜像,随便填。
通过maven 命令:
第一步:mvn clean
第二步: mvn package docker:bulid ,如下:
Step 2/6 : VOLUME /tmp
—> Running in a98be3878053
—> 8286e98b54c5
Removing intermediate Container a98be3878053
Step 3/6 : ADD springboot-with-docker-0.0.1-SNAPSHOT.jar app.jar
—> c6ce13e50bbd
Removing intermediate container a303a3058869
Step 4/6 : RUN sh -c ‘touch /app.jar’
—> Running in cf231afe700e
—> 9a0ec8936c00
Removing intermediate container cf231afe700e
Step 5/6 : ENV JAVA_OPTS “”
—> Running in e192597fc881
—> 2cb0d73bbdb0
Removing intermediate container e192597fc881
Step 6/6 : ENTRYPOINT sh -c Java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar
—> Running in ab85f53fcdd8
—> 60fdb5c61692
Removing intermediate container ab85f53fcdd8
Successfully built 60fdb5c61692
[INFO] Built forezp/springboot-with-docker
[INFO] ————————————————————————
[INFO] BUILD SUCCESS
[INFO] ————————————————————————
[INFO] Total time: 01:45 min
[INFO] Finished at: 2017-04-19T05:37:44-07:00
[INFO] Final Memory: 19M/48M
[INFO] ————————————————————————
镜像构建成功。查看镜像:
docker images
显示:
forezp/springboot-with-docker latest 60fdb5c61692 About a minute ago 195 MB
启动镜像:
$ docker run -p 8080:8080 -t forezp/springboot-with-docker
打开浏览器访问 localhost:8080;浏览器显示:Hello Docker World。
说明docker 的springboot工程已部署。
停止镜像:
docker stop 60fdb5c61692
删除镜像:
docker rm 60fdb5c61692
参考资料
https://docs.docker.com/engine/reference/builder/))
http://www.runoob.com/docker/docker-tutorial.html
源码下载
https://github.com/forezp/SpringBootLearning
优秀文章推荐:
- 更多springboot 教程:springBoot非官方教程 | 文章汇总
- 更多springcoud 教程:史上最简单的 SpringCloud 教程 | 文章汇总
转自:http://blog.csdn.net/forezp/article/details/71024219
(转) SpringBoot非官方教程 | 第二十四篇: springboot整合docker的更多相关文章
- SpringBoot非官方教程 | 第二十四篇: springboot整合docker
转载请标明出处: 原文首发于:https://www.fangzhipeng.com/springboot/2017/07/11/springboot24-docker/ 本文出自方志朋的博客 这篇文 ...
- SpringBoot非官方教程 | 第二十六篇: sprinboot整合elk,搭建实时日志平台
转载请标明出处: 原文首发于https://www.fangzhipeng.com/springboot/2017/07/11/sprinboot25-elk/ 本文出自方志朋的博客 这篇文章主要介绍 ...
- SpringBoot非官方教程 | 第二十二篇: 创建含有多module的springboot工程
转载请标明出处: 原文首发于:https://www.fangzhipeng.com/springboot/2017/07/11/springbot22-modules/ 本文出自方志朋的博客 这篇文 ...
- SpringBoot非官方教程 | 第二十五篇:2小时学会springboot
转载请标明出处: http://blog.csdn.net/forezp/article/details/61472783 本文出自方志朋的博客 一.什么是spring boot Takes an o ...
- SpringBoot非官方教程 | 第十四篇:在springboot中用redis实现消息队列
转载请标明出处: 原文首发于:https://www.fangzhipeng.com/springboot/2017/07/11/springboot14-redis-mq/ 本文出自方志朋的博客 这 ...
- SpringBoot非官方教程 | 第二十篇: 处理表单提交
转载请标明出处: 原文首发于:https://www.fangzhipeng.com/springboot/2017/07/11/springboot-form/ 本文出自方志朋的博客 这篇文件主要介 ...
- (转)SpringBoot非官方教程 | 第十二篇:springboot集成apidoc
首先声明下,apidoc是基于注释来生成文档的,它不基于任何框架,而且支持大多数编程语言,为了springboot系列的完整性,所以标了个题. 一.apidoc简介 apidoc通过在你代码的注释来生 ...
- SpringBoot非官方教程 | 第十九篇: 验证表单信息
转载请标明出处: 原文首发于:https://www.fangzhipeng.com/springboot/2017/07/11/springboot19/ 本文出自方志朋的博客 这篇文篇主要简述如何 ...
- SpringBoot非官方教程 | 第十八篇: 定时任务(Scheduling Tasks)
转载请标明出处: 原文首发于:https://www.fangzhipeng.com/springboot/2017/07/11/springboot18-scheduling/ 本文出自方志朋的博客 ...
随机推荐
- crc16算法,包括单片机和c#版本
c语言的#include <stdio.h> static short const wCRC16Table[256] = { 0x0000, 0xC0C1, 0xC181 ...
- POJ 1742 Coins(多重背包, 单调队列)
Description People in Silverland use coins.They have coins of value A1,A2,A3...An Silverland dollar. ...
- Objective-C语法之KVC使用
转自:http://www.cnblogs.com/stoic/archive/2012/07/20/2601315.html 除了一般的赋值和取值的方法,我们还可以用Key-Value-Coding ...
- windows10 专业版激活工具
分享一个激活工具: 链接:https://pan.baidu.com/s/1HsdAKuxxsdvzZ282k7HtMg 提取码:tqe0
- 原来 CSS 与 JS 是这样阻塞 DOM 解析和渲染的
hello~各位亲爱的看官老爷们大家好.估计大家都听过,尽量将CSS放头部,JS放底部,这样可以提高页面的性能.然而,为什么呢?大家有考虑过么?很长一段时间,我都是知其然而不知其所以然,强行背下来应付 ...
- poj_1151 线段树
题目大意 在平面上给定n个矩形,可以相互覆盖全部或者部分,求出矩形占据的总面积. 题目分析 将矩形按照x方向的进行分割之后,将平面沿着y方向划分一系列单元(不定高度),每个矩形在y方向上占据若干连续的 ...
- ajax jquery校验用户是否已经注册
服务端代码这里就不贴了 html代码比较简单,需要自行引入jquery库 <body> 请输入用户名:<input type="text" id="us ...
- 关于Java中按值传递和按引用传递的问题详解
写了两个方法,一个是多关键字的快速排序,一个是基于多关键字的基速排序.两个方法的参数列表是一样一样的,但是快速排序正常工作,但是基数排序传出来的参数一点没有改变,苦思冥想了半天也没想通是怎么回事,于是 ...
- saltstack之syndic的配置
author: headsen chen date: 2018-08-04 22:22:09 1,架构 2,配置 2.1,配置master: yum -y install epel-relea ...
- Python - 字符串的方法及注释
%r非常有用,他的含义是不管是整形还是字符串,都将打印出来