- 服务器下创建
/docker/jar
目录,在该目录下创建指定项目存放目录,例如:test,将jar包上传到该目录下,并重命名为ROOT.jar
。在/docker
目录下创建/logs
目录,用来存放日志文件,在该目录下创建指定项目日志存放目录。
# test为具体项目名
mkdir -p /docker/jar/test
mkdir -p /docker/logs/test
mv /docker/jar/test/efp-web-5.4-M-SNAPSHOT.jar /docker/jar/test/ROOT.jar
- 在该目录下创建Dockerfile 文件
vi Dockerfile
- 修改 Dockerfile 文件并保存
# 拉取一个jdk为1.8的docker镜像
FROM java:8
# 声明作者是guoyl
MAINTAINER guoyl
# 前一个 ROOT.jar 为上传的jar包,后一个 ROOT.jar 是将服务器中jar包对应在容器中运行的jar包名称
ADD ROOT.jar ROOT.jar
# 容器暴露的端口号,需要与jar包在容器中运行使用端口号一致
EXPOSE 8080
# 容器启动之后执行的命令, java -jar ROOT.jar
ENTRYPOINT ["java","-jar","ROOT.jar"]
- 执行命令,构建镜像
docker build -t guoyl/demo .
注意:最后的点号,表示在Dockerfile文件在当前目录下,guoyl/demo
表示构建后的镜像名称。
- 运行
# --restart=always 表示docker容器在停止或服务器开机之后会自动重新启动
docker run -d --restart=always --name demo -p 8080:8080 -v /docker/logs/test:/logs guoyl/demo
- 查看容器是否运行
docker ps
- 查看启动日志
docker logs --tail 300 -f demo
注:如果存在jar包更新该方法需要重新生成镜像,再运行镜像生成新容器才可生效。Docker存在另一种通过拉取jdk镜像生成jdk容器部署jar包方式可以无需重新生成镜像,只需替换jar包重启容器即可,后续会更新