springboot程序构建一个docker镜像(十一)
准备工作
环境:
- linux环境或mac,不要用windows
- jdk 8
- maven 3.0
- docker
对docker一无所知的看docker教程。
创建一个springboot工程
引入web的起步依赖,创建一个 Controler:
1
2
3
4
5
6
7
8
9
10
11
12
|
@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文件:
1
2
3
4
5
6
7
8
|
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镜像构建的插件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
<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 ,如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
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
显示:
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 |
springboot程序构建一个docker镜像(十一)的更多相关文章
- Spring Boot教程(十一) springboot程序构建一个docker镜像
准备工作 环境: linux环境或mac,不要用windows jdk 8 maven 3.0 docker 对docker一无所知的看docker教程. 创建一个springboot工程 引入web ...
- DOCKER - 构建一个docker镜像并跑起来
一.有个基础镜像 1.基础镜像的选择 当前市场有众多可选择的基础docker镜像,可参考: https://blog.csdn.net/nklinsirui/article/details/80967 ...
- 使用镜像仓库托管自己构建的Docker镜像
自己构建的Docker镜像,默认存储在本机中,Docker有提供某些方式分享这些镜像,但不是主流的镜像分享方式,也有违于开源社区的共享精神. 本文介绍如何使用GitHub托管Dockerfile:使用 ...
- 构建自定义docker镜像,上传至docker hub
docker 优势 (外部参考) Docker 让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后 发布到任何流行的Linux机器上,便可以实现虚拟化.Docker改变了虚拟化的方 式,使 ...
- 给Ocelot做一个Docker 镜像
写在前面 在微服务架构中,ApiGateway起到了承前启后,不仅可以根据客户端进行分类,也可以根据功能业务进行分类,而且对于服务调用服务也起到了很好的接口作用.目前在各个云端中,基本上都提供了Api ...
- Docker构建一个node镜像
0. 设置国内docker镜像源 进入Settings->Daemon->Advanced,添加如下配置. { "registry-mirrors": [ " ...
- 使用阿里云镜像仓库构建国外 Docker 镜像
使用阿里云镜像仓库下载国外镜像 在日常使用 Docker 或 K8S 的过程中,经常会需要到国外的网站中下载镜像,但是有些网站在国内是无法访问的.对于这个问题可以使用阿里云提供的镜像仓库进行下载,然后 ...
- docker学习-运行第一个docker镜像hello world
docker pull [OPTIONS] NAME[:TAG]:从远程仓库拉取一个镜像到本地,NAME是要拉取的镜像的名称,TAG是docker镜像的版本,不指定的话默认是最新版本 docker ...
- 制作一个docker镜像:mysql-8-x64-linux
因为个人学习需要,为软件系统的虚拟容器化,以下将mysql制作为docker镜像,并记录下详细步骤. 欢迎大家学习交流和转载,同时写作不易,如果各位觉得不错,请点赞支持. 备注:以下代码和文章,欢迎复 ...
随机推荐
- Java+selenium 爬Boss直聘中职位信息,薪资水平和职位描述
需要下载合适的selenium webdirver jar包和对应浏览器的驱动jar包 import org.openqa.selenium.By; import org.openqa.selen ...
- .NET 使用中文编码
在.Net Core中默认System.Text中不支持CodePagesEncodingProvider.Instance, System.Text.Encoding.CodePages.dll允许 ...
- php格式化数字输出number_format
<?php $num = 4999.944444; $formattedNum = number_format($num).PHP_EOL; echo $formattedNum; $forma ...
- python中shutil模块
shutil是对OS中文件操作的补充:移动.复制.打包.压缩.解压. 1.copy文件内容到另一个文件,可以copy指定大小的内容. shutil.copyfileobj(fsrc, fdst[, l ...
- link和@import区别
推荐使用:link 区别 1.从属关系区别@import是 CSS 提供的语法规则,只有导入样式表的作用:link是HTML提供的标签,不仅可以加载 CSS 文件,还可以定义 RSS.rel 连接属性 ...
- python return dict bug?
def to_dict(self): para = OrdererDict() para['dd'] = self.XXX ... return para 这样一个简单函数 para1 = obj.t ...
- 算法笔记--最大流和最小割 && 最小费用最大流 && 上下界网络流
最大流: 给定指定的一个有向图,其中有两个特殊的点源S(Sources)和汇T(Sinks),每条边有指定的容量(Capacity),求满足条件的从S到T的最大流(MaxFlow). 最小割: 割是网 ...
- Python Scrapy 爬取煎蛋网妹子图实例(二)
上篇已经介绍了 图片的爬取,后来觉得不太好,每次爬取的图片 都在一个文件下,不方便区分,且数据库中没有爬取的时间标识,不方便后续查看 数据时何时爬取的,所以这里进行了局部修改 修改一:修改爬虫执行方式 ...
- h5调用手机相册摄像头以及文件夹
在之前一家公司的时候要做一个app里面有上传头像的功能,当时研究了好久,找到了一篇文章关于h5摄像头以及相册的调用的,所以就解决了这个问题了!!我这里记录一下以便后面有人需要,可以参考一下!!!! 下 ...
- python中configparser模块的使用
configparser模块用于生成和修改常见配置文档,当前模块的名称在 python 3.x 版本中变更为 configparser. 首先要写一个如下所示的配置文件: [DEFAULT] serv ...