Docker运行jar包

springboot项目可以很方便的通过jar包的方式在容器中运行。

如果了解Dockerfile或者了解docker run参数,可以快速掌握如何部署各种服务,不了解的可以看下面这篇文章,只想运行成功项目的可以不需要看:
Dockerfile创建镜像

使用Dockerfile创建镜像运行

1.编写Dockerfile文件
建立一个docker文件夹,cd到文件夹内,创建并编写Dockerfile文件

FROM openjdk:8

LABEL version="1.0" maintainer="hjm<depthfirst@gg.com>"

VOLUME /tmp

EXPOSE 8080

COPY concurrent-1.0-SNAPSHOT.jar con.jar

RUN bash -c "touch /con.jar"

ENTRYPOINT ["java","-jar","/con.jar"]

VOLUME 指定临时文件目录为/tmp。在主机 /var/lib/docker 目录下创建临时文件,挂载到容器的/tmp。/tmp目录用来将容器内数据持久化到外部主机,因为Spring Boot内嵌的Tomcat默认工作目录为/tmp。
2.部署jar包文件
复制jar包到当前建立的docker文件夹下

root@DESKTOP-UCCCCAE:~/docker# ls
Dockerfile  concurrent-1.0-SNAPSHOT.jar

3.制作镜像

root@DESKTOP-UCCCCAE:~/docker# docker build -t demo:v1 .

4.启动容器

root@DESKTOP-UCCCCAE:~/docker# docker run -d -p 8080:8080 demo:v1
-d:容器后台运行 
-p:端口映射,服务器端口号:项目端口号(容器开放端口号),即服务器端口映射到容器端口

拉取jdk镜像运行jar包

1.拉取镜像
拉取openjdk8的镜像

docker pull openjdk:8

2.确定jar包所在目录
例如jar包在/root/docker目录下

root@DESKTOP-UCCCCAE:/# ls /root/docker/
concurrent-1.0-SNAPSHOT.jar

3.运行构建容器

docker run -d -v /root/docker:/jar \
-p 8080:8080 --name demo2 openjdk:8 \
/usr/local/openjdk-8/bin/java \
-jar -Duser.timezone=GMT+08 \
/jar/concurrent-1.0-SNAPSHOT.jar
# \为换行作用,方便观看,可去掉\放在一行粘贴执行
# -v 目录挂载 -p:端口映射
# -Duser.timezone 是设置时区
# openjdk:8 步骤1中拉取镜像名
# /usr/local/openjdk-8/bin/java java执行路径,和拉取的镜像
# 有关,不清楚可新建终端执行docker run -it 镜像名 /bin/bash,
# 使用which java命令查看
#/jar/concurrent-1.0-SNAPSHOT.jar 容器中jar包路径

以上就是Docker运行jar包的两种方式,如果Springboot项目打成war包可以看这篇还没写

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐