docker运行发布jar包

/ dockerJava / 没有评论 / 2141浏览

docker运行jar文件

一、环境

本地虚拟机安装的centos7

二、安装docker

yum install docker-engine  

三、开启阿里云加速

{
  "registry-mirrors": ["https://almtd3fa.mirror.aliyuncs.com"]
}

https://almtd3fa.mirror.aliyuncs.com为阿里云的加速地址。修改后,重启docker

systemctl daemon-reload
service docker restart

四、下载java镜像

下载java镜像,tag为8u111

docker pull java:8u111

五、执行可运行的jar文件

将test.jar放在虚拟机的/usr目录下,然后执行命令启动jar

docker run -d -p 9090:9090 -v /usr/springboot-1.jar:/usr/springboot-1.jar --name springboot java:8u111 java -jar /usr/springboot-1.jar

Docker 发布Jar包

背景

使用docker一键发布Jar包形式的java项目。

内容

dockerfile 如下

FROM java:8-jre-alpine
# 设置工作目录
WORKDIR /home
# 将外面的文件添加到镜像  /home/app.jar
ADD ./build/libs/target.jar app.jar
# 添加配置文件到镜像  /home/application.properties
ADD ./src/main/resources/application.properties  application.properties
# 帮助镜像使用者理解这个镜像服务的守护端口,以方便配置映射。在运行时使用随机端口映射时,也就是 docker run -P 时,会自动随机映射 EXPOSE 的端口。
EXPOSE 8080
# 定义匿名数据卷。在启动容器时忘记挂载数据卷,会自动挂载到匿名卷。
VOLUME ["/home"]
# 类似于 CMD 指令,但其不会被 docker run 的命令行参数指定的指令所覆盖,而且这些命令行参数会被当作参数送给 ENTRYPOINT 指令指定的程序。
ENTRYPOINT ["java", "-jar", "app.jar", "--spring.config.location=application.properties", "-Djava.security.egd=file:/dev/./urandom"]

备注

java -jar xxx.jar 可通过一系列方式指定配置文件,具体如下。

# 指定jar中的 application-yyy.properties
java -jar xxx.jar  --spring.profiles.active=yyy[, zzz]

# 指定jar外的 application-yyy.properties
java -jar xxx.jar  --spring.config.location=/xxx/application-yyy.properties

打包

docker build -t app .