使用Docker部署Java程序

背景
个人小网站升级之路中,介绍了最后使用Docker部署应用程序,本文就着重介绍怎么使用Docker部署
基本信息如下:
- 服务器系统 Ubuntu
- 配置 1C1G 25G SSD磁盘
- 服务器需要安装软件:
- Git
- Vim
前期准备
安装Docker
https://docs.docker.com/engine/install/ubuntu/
安装完成后,记得把docker设置为自启动
1 | systemctl enable docker |
准备Dockerfile
因为是Java程序,需要确定自己使用了哪个版本的JDK,比如我使用的是JDK8
去dockerhub 寻找合适的基础镜像
比如我使用的是openjdk
https://hub.docker.com/_/openjdk
在tag中寻找8的版本,openjdk分为两个大版本系列
jdk 完整的编译环境
jre 运行环境,体积更小
我是用的基础镜像为openjdk:8-jre
1 | # 设置本镜像需要使用的基础镜像 |
完整的Dockerfile如上。
验证Dockerfile
将项目clone下来
Maven打包
1 | mvn clean package -DskipTests |
构建镜像
注意,这里打包在项目根目录,看添加的jar文件就可以观察到需要在哪个地方开始打包
1 | docker build -t md-view:1.0 . |
检查镜像
1 | docker run md-view:1.0 |
查看日志是否正常
正式启动
如上次执行的验证正常,则开始正式运行,执行后,会返回一串字符串,这个就是容器的ID
1 | docker run -d -p 8081:8081 --name md-view --restart=always -v ${pwd}:/config.json md-view:1.0 |
--restart=always
可以让容器异常停止时,自动启动,但是这个命令只能代表容器在运行,如容器假死,或者由于某些原因导致响应缓慢,则无法处理
如需使用真正的健康检查,需要在Dockerfile中加入健康检查指令,或者使用docker-compose
启动后,查看日志
1 | docker logs -f 容器ID |
其他
因为每次操作docker都需要ssh远程进机器,我一般使用 portainer 将docker操作web化,这样可以在浏览器操作docker