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 文件生成本工程的镜像:
本文由 创作,采用 知识共享署名4.0 国际许可协议进行许可。本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名。最后编辑时间为: 2020/05/16 03:13