Java包用Docker部署的简单方式
安装和配置Docker
首先,用Docker部署Java应用程序的第一步是安装和配置Docker,可以参考链接:CentOS Docker 安装
编写Dockerfile
需要用Docker启动应用程序,需要编写Dockerfile,Dockerfile中指定Jar名称、端口和启动命令。
首先新建目录和dockerfile文件,例如:
# mkdir -p /data/dockerfile/service
# cd /data/dockerfile/service
# vim Dockerfile
FROM openjdk:8-jdk
ENV SERVER_FILE app-1.0.0.jar
ENV SERVER_DIR /jar/
EXPOSE 8080
ENTRYPOINT java -jar -Duser.timezone=GMT+8 -Dspring.profiles.active=main "$SERVER_DIR$SERVER_FILE"
这里指定的是/jar/目录,可以在docker run的时候映射,还有指定了启动配置文件为main,在测试环境时可以更换为test,端口号为jar文件的启动端口号,提供服务的端口号也可以映射。
openjdk:8-jdk会在docker run的时候自动pull,也可以提前pull。
编译镜像
dockerfile文件创建完成后,就可以通过docker build构建镜像文件。
# docker build -t service:1.0.0 .
最后一个点不要忘记,-t的意思是tag名称为service,版本为1.0.0,编译完成后,可以检查确认镜像文件。
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql latest 65f3f983cb08 2 weeks ago 632MB
service 1.0.0 4276cb40476d 20 months ago 526MB
上传Jar包并构建容器
现在需要将Jar文件上传到服务器,可以通过lrzsz或者vsftp的方式。我使用的是xftp工具将文件上传到/data/jar/。
# ll
total 60656
-rw-r--r-- 1 root root 62111601 Apr 15 17:20 my-test-app-1.0.0.jar
确认上传完成后,开始构建容器。
# docker run -dit --restart=always -p 8001:8080 -v /data/jar/:/jar/ -v /data/jar/logs/:/logs/ --name my-test-app service:1.0.0
其中:
--restart=always 表示开机自动启动;
-p 表示端口映射,服务端口是8001,对应内部端口8080;
-v 表示磁盘挂载,本地/data/jar目录代表容器内部的/jar目录,本地/data/jar/logs目录表示/logs目录,这样logback就只需要指定到/logs目录下就可以了;
接下来检查服务启动状态和查看服务日志:
# docker ps -a
# docker logs -f --tail=20 my-test-app
那整个部署过程就完成了,其他有可能需要用到的脚本如下:
# 停止容器
# docker stop my-test-app
# 删除容器
# docker rm my-test-app
# 删除镜像
# docker rmi service:1.0.0