Docker将jar包制作为镜像,在Docker环境运行
2021-12-09 本文已影响0人
墨迹嘿嘿
首先我们将一个简单的Springboot项目打包成jar
然后将项目上传至Linux系统
系统提前装好docker环境
测试docker版本:
docker -v
image
首先我们将准备的xxx.jar,Dockerfile
拷贝到我们的CentOS 7
机器上
下图idea 进行打好的包
image我们拷贝的路径为:
/usr/local/dev
image
编写的Dockerfile文件为:
FROM openjdk:8-jdk-alpine
VOLUME /tmp
ADD spring-boot-docker.jar app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
上面命令的相关解释:
- 从docker仓库获取
openjdk
作为我们项目的容器 -
VOLUME
指向了一个/tmp
的目录,由于Spring Boot使用内置的Tomcat容器,Tomcat默认使用/tmp
作为工作目录。效果就是在主机的/usr/local/dev目录下创建了一个临时文件,并连接到容器的/tmp
。 - 项目的
dspring-boot-docker.jar
作为app.jar
添加到容器。 -
ENTRYPOINT
执行项目app.jar
。为了缩短 Tomcat 启动时间,添加一个系统属性指向/dev/urandom
作为 Entropy Source
构建Docker镜像
我们在/usr/local/dev目录下,执行Docker
的命令来构建镜像。
docker build -t ludashi/spring-boot-docker-t:latest .
这个命令就是使用Docker
的build
命令来构建镜像,并给镜像起了一个名字ludashi/spring-boot-docker-t其TAG
为latest
在当前文件夹下。
我们使用docker images
来查看所有的镜像
docker images
image
我们发现镜像列表里面有我们生成的镜像ludashi/spring-boot-docker-t
运行镜像
镜像构建成功之后,就可以运行容器了:
docker run -d --name spring-boot-docker -p 8899:8899 ludashi/spring-boot-docker-t
image
这个表示docker容器在停止或服务器开机之后会自动重新启动 --restart=always 这块可不执行
docker run -d --restart=always --name spring-boot-docker -p 8899:8899 ludashi/spring-boot-docker-t
如果docker run 的时候没有加 --restart=always ,然后已经运行的docker容器怎么设置自动重启? 执行下面命令:
docker update --restart=always spring-boot-docker
然后docker ps 看看你的容器有没有在运行即可
docker ps
image
docker logs --tail 300 -f spring-boot-docker-t 查看启动日志
docker logs --tail 300 -f spring-boot-docker
image
访问浏览器:
imageOK!