演示环境
CentOS 7.2
Docker 1.13.1
Spring Boot 2.1.1.RELEASE
准备一个Spring Boot项目
构建一个 Spring Boot项目的方式有很多,也不是我们讨论的重点,这里就不多做描述了。我们在项目中准备一个简单的HelloController,其中有一个sayHello()方法映射到我们访问项目的跟路径,访问时返回:Hello Jerome, This is docker image !。
1 | java复制代码package top.nikk.demo.controller; |
对项目打包,生成可执行jar
我们到项目的根目录,运行mvn clean package对项目进行打包,运行之后会在target目录下生成一个xxx.jar的可执行jar文件。
编写Dockerfile
1 | text复制代码# Docker image for springboot file run |
上面命令的相关解释:
从docker仓库获取openjdk作为我们项目的容器
VOLUME指向了一个/tmp的目录,由于Spring Boot使用内置的Tomcat容器,Tomcat默认使用/tmp作为工作目录。效果就是在主机的/usr/local/apps目录下创建了一个临时文件,并连接到容器的/tmp。
项目的docker-demo-0.0.1.jar作为app.jar添加到容器。
ENTRYPOINT 执行项目 app.jar。为了缩短 Tomcat 启动时间,添加一个系统属性指向/dev/urandom 作为 Entropy Source
from java:8 拉取一个jdk为1.8的docker image
- maintainer 作者是Felix
- felix-admin.jar 就是你上传的jar包,修改名称为app.jar包
- app.jar 是你将该jar包重新命名的名称,在容器中运行
- expose 该容器暴露的端口是多少,就是jar在容器中以多少端口运行
- entrypoint 容器启动之后执行的命令,java -jar demo.jar 即启动jar
构建Docker镜像
我们进入到/usr/local/apps目录下,执行Docker的命令来构建镜像
1 | linux复制代码docker build -t top.nikk/docker-demo:1.0.0 . |
注意此处最后有一个 . 的命令
参数说明:
1 | diff复制代码-t :指定要创建的目标镜像名 |
这个命令就是使用Docker的build命令来构建镜像,并给镜像起了一个名字top.nikk/docker-demo其TAG为1.0.0在当前文件夹下。
我们使用docker images来查看所有的镜像。
之后执行
1 | linux复制代码docker run -id -p 8080:8080 --name demo top.nikk/docker-demo:1.0.0 |
本文转载自: 掘金