docker 部署Java项目
jdk安装参考:
https://blog.csdn.net/jg_csdn/article/details/122671063?spm=1001.2014.3001.5501
1、将jar包上传到centos上
2、编写Dockerfile文件,创建文件名为Dockerfile的文本文件,将maven打包好的jar包和Dockerfile文件放在同一目录下,内容如下:
Dockerfile文件内容
FROM java:8
COPY small_demo.jar app.jar
RUN bash -c "touch /app.jar"
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "app.jar"]
如果没有安装jdk环境,也可以使用以下方式,只有第一行改变了,直接使用java:8-alpine镜像方式。
FROM java:8-alpine
COPY small_demo.jar app.jar
RUN bash -c "touch /app.jar"
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "app.jar"]
3、 制作镜像
docker build -t small .
制作完成,查看镜像
docker image ls
4、启动容器
docker run -d -p 8080:8081 small
重启docker
systemctl restart docker
再重启docker 容器
dockers start 容器id
5、日志清理
有两种方式,一种写脚本定时删除,另一种设置容器日志大小
默认日志存储在/var/lib/docker/containers/目录下
一、写脚本定时删除
新建脚本,我一般存放在日志目录同级
vim /var/lib/docker/containers/clean_docker_log.sh
#!/bin/sh
echo "======== start clean docker containers logs ========"
logs=$(find /var/lib/docker/containers/*/ -name *-json.log)
for log in $logs
do
echo "clean logs : $log"
cat /dev/null > $log
done
echo "======== end clean docker containers logs ========"
修改脚本权限
chmod 777 /var/lib/docker/containers/clean_docker_log.sh
执行脚本
./clean_docker_log.sh
设置定时任务执行脚本
检查本机crond的基本情况
service crond status
查看当前定时任务
crontab -l
编辑定时任务
crontab -e
# 定时执行脚本
*/1 * * * * /var/lib/docker/containers/clean_docker_log.sh
*/1 :代表每分钟执行
再查看
重启定时服务
systemctl reload crond.service
systemctl restart crond.service
二、设置容器日志大小
1.新建/etc/docker/daemon.json,若有就不用新建了。添加log-dirver和log-opts参数,样例如下:
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m",
"max-file": "10"
}
}
max-size=100m,意味着一个容器日志大小上限是100m,
max-file=3,意味着一个容器有三个日志,分别是id+.json、id+1.json、id+2.json。
2.然后重启docker的守护线程
systemctl daemon-reload
systemctl restart docker.service
注意:新创建的容器会生效,原有容器不生效。