对项目打包,生成可执行jar
我们到项目的根目录,运行mvn clean package
对项目进行打包,运行之后会在target
目录下生成一个xxx.jar
的可执行jar
文件。
制作Docker
镜像
首先我们将准备的xxx.jar
拷贝到我们的 Ubuntu18 机器上,拷贝的方法就不做描述了,大家各显神通吧。这里我是将我生成docker-demo-0.0.1.jar
拷贝到了/var/docker/
文件夹下。这里大家也不一定使用Linux
机器,这里只是我用了演示,尽量符合生产环境。
编写Dockerfile
使用vi Dockerfile
对文件进行编辑。
FROM openjdk:8-jdk-alpine
VOLUME /tmp
ADD docker-demo-0.0.1.jar app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
上面命令的相关解释:
- 从docker仓库获取
openjdk
作为我们项目的容器 VOLUME
指向了一个/tmp
的目录,由于Spring Boot使用内置的Tomcat容器,Tomcat默认使用/tmp
作为工作目录。效果就是在主机的/var/lib/docker
目录下创建了一个临时文件,并连接到容器的/tmp
。- 项目的
docker-demo-0.0.1.jar
作为app.jar
添加到容器。 ENTRYPOINT
执行项目app.jar
。为了缩短 Tomcat 启动时间,添加一个系统属性指向/dev/urandom
作为 Entropy Source
构建Docker镜像
我们在/var/docker/testdocker
目录下,执行Docker
的命令来构建镜像。
docker build -t docker-user-service:latest .
这个命令就是使用Docker
的build
命令来构建镜像,并给镜像起了一个名字docker-demo-user-service
其TAG
为latest
在当前文件夹下。
我们使用docker images
来查看所有的镜像。
我们发现镜像列表里面有我们生成的镜像docker-demo
。
运行镜像
通过上面的步骤我们就已经完成了镜像的创建,接下来我们只需要使用docker run -p 8080:8080 -t jerome.xin/docker-demo
命令来运行我们的项目。接下来我们通过http://192.168.2.119:8080/
来访问项目。得到如下结果:
我们能看到正常的返回了我们预期结果。这里说明一下192.168.2.119
这个是我的虚拟机的地址。如果不想看到Spring Boot
的启动日志我们可以使用这个命令docker run -d -p 8080:8080 -t jerome.xin/docker-demo
启动项目。
执行docker ps
来查看我们已经运行的镜像。
docker ps
如果需要停止容器,可以执行下面的命令。
docker stop 55e9e3a65e07
总结
使用Docker
使用可以执行的jar
制作并运行镜像,可以总结为两步。第一步准备好一个可以执行的jar
文件,第二步编写Dockerfile
文件,最后使用Docker
的build
命令就可以把一个可执行jar
文件制作成镜像。因为我们的可执行的jar
文件是用来内嵌的Tomcat
容器,所以我们只需要从Docker
的中心仓库拉取一个JDK
作为我们镜像的容器即可。
Spring Boot,Docker,Jar