Dockerfile 部署 jar

小小码农 2021年10月24日 1,125次浏览

简易版

1.生成Dockerfile文件

# 指令指明了当前镜像的基镜像,编译当前镜像时自动下载基镜像。
FROM java:8
# 指明作者
MAINTAINER zjb
# 复制jar文件到镜像中去并重命名为quality-system.jar
ADD quality.jar quality-system.jar
# 暴露8081端口
EXPOSE 8081
# 启动时执行java -jar quality-system.jar
ENTRYPOINT ["java","-jar","quality-system.jar"]

如果需要dockerfile默认带参数可将ENTRYPOINT修改如下

ENV jvm_opts="-Duser.timezone=GMT+8"

ENTRYPOINT exec java -jar $jvm_opts quality-system.jar

如果需要在docker run中带参数,可修改如下

ENTRYPOINT java ${JAVA_OPTS} -jar sms-server.jar

docker run --name sms-server-security \
## 如下即可
-e JAVA_OPTS='-Djava.security.egd=file:/dev/./urandom' \
-e spring.cloud.nacos.discovery.server-addr=192.169.1.82:8848 \
-e spring.cloud.nacos.config.server-addr=192.169.1.82:8848 \
-e spring.cloud.nacos.config.ext-config[0].data-id=sms-server-node1.properties \
-p 8070:8090  \
-v /opt/sms_server/log:/log \
-v /opt/sms_server/nacos:/root/nacos \
-d \

2.将dockerfile和jar文件放入同一目录,例如/root/project,并指向当前目录:cd /root/project
3.创建镜像
docker build -t imageName .,imageName是镜像名
4.运行容器
docker run -d -p 8089:8089 imageName
5.查看日志
docker logs -t --tail 200 8cb2,8cb2是容器ID,可通过docker ps -a查看容器ID

进阶版

增加数据资源持久化,使用 Volume 数据卷方式进行挂载
Volume命令缩写-v,数据卷挂载常规的有3种方式:

  • 指定目录挂载
  • 匿名挂载
  • 具名挂载

其中 指定目录挂载方式无法通过docker volume ls 进行查找,它是一个完 整的路径,不会在docker安装目录下生成数据卷,注意,路径不能使用./方式的相对路径,但是可以使用~/相对路径。
./表示当前路径下的目录
~/表示用户主目录,也就是登录系统后直接进入的目录

匿名挂载具名挂载都是在docker安装目录下生成数据卷,匿名挂载Docker会自动将数据卷用一串很长的字符命名,具名挂载Docker会按照指定的数据卷名称命名。
指定目录挂载使用方式:

docker run  -d --name=自定义容器名称 -v /data/logs:/data/logs -p 8090:8090 镜像名称

匿名挂载使用方式:

docker run  -d --name=自定义容器名称 -v /data/logs -p 8090:8090 镜像名称

具名挂载使用方式:

docker volume create 自定义数据卷名称
docker run  -d --name=自定义容器名称 -v 自定义数据卷名称:/data/logs -p 8090:8090 镜像名称