📚 开源资源分享——颜佐光的个人书架
✉️ 联系站长
书架 / docker / 安装

docker运行发布jar包

2019-11-21 15:26 · 约 2,023 字 · 浏览 2,671 次 · 更新 2020-05-16 11:13安装

docker运行jar文件

一、环境

本地虚拟机安装的centos7

二、安装docker

yum install docker-engine  

三、开启阿里云加速

  • docker的镜像仓库在国外,下载会很慢,启用阿里云加速。
  • 在/etc/docker目录下创建daemon.json文件,添加如下内容
{
  "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
  • -d 表示在后台启动
  • -p 9090:9090 表示将容器的端口 映射成宿主主机的端口,否则9090端口访问不到
  • -v /usr/springboot-1.jar:/usr/springboot-1.jar 表示将宿主主机的jar文件,映射到容器中(分号前为宿主主机的路径,分号后为容器中的路径)
  • --name springboot 表示为该容器取一个全局唯一的名称,这里我取的名称为springboot
  • java:8u111 表示镜像文件的名称和tag
  • java -jar /usr/springboot-1.jar 表示运行jar包,注意:这里的jar包为容器中的位置,是通过前面的-v属性映射的

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 .
  • -t :给镜像取名为 app
  • . 通过 dockerfile 文件生成本工程的镜像:
← 返回《docker》目录书架 →