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

消息盒子

# 暂无消息 #

只显示最新10条未读和已读信息