一、项目挂载:
一个springboot小项目,通过容器化方式部署。当修改工程源码后打包成jar,不想每次都重新进行docker build生成新的镜像,则采用挂载方式,dockerfile如下:
# 容器化部署方案
# Docker image for springboot file run
# VERSION 0.0.1
# Author: zhaoxx
# #################################################################### #
# Description:
# 1、如使用docker部署,当前文件需要放到服务器/home/docker/路径下
# 2、当前工程生成的jar也要放到/home/docker/路径下
# 3、构建镜像:docker build -t similarity-processor .
# 4、启动容器:docker run -d -p 8080:8080 -v /home/similarity-processor:/home/similarity-processor similarity-processor
#
# 后续启动:docker start 镜像名称
# 后续停止:docker stop 镜像名称
# 或者可视化插件中停止与启动
# #################################################################### #
# 基础镜像使用java
FROM java:8
# 声明运行时容器的端口,对应项目端口
EXPOSE 8080
# 创建一个可以从本地主机或其他容器挂载的挂载点,一般用来存放数据库和需要保持的数据等
VOLUME /home/similarity-processor
# 将jar包添加到容器中,可以更名,后者为容器中jar
#ADD similarity-processor-1.0.jar similarity-processor-1.0.jar
# 指定工作目录
WORKDIR /home/similarity-processor
# 时区调整
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone
# sh -c是将后面命令视为一个整体,touch命令实则改变了jar的时间,并无其它意义
RUN sh -c 'touch similarity-processor-1.0.jar'
# 此处命令为启动容器
# "-Djava.security.egd=file:/dev/./urandom"java参数,可靠的产生随机数,此处目的是加快系统启动,如果存在tomcat建议使用此参数
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","similarity-processor-1.0.jar"]
dockerfile中注释已经明确,第一次需要构建镜像,同时执行“docker run -d -p 8080:8080 -v 自定义存放目录:VOLUME目录 自定义镜像名称”启动容器,后续更改了jar后,只需把jar放到自定义存放目录即可
然后执行“docker restart 容器名称”
二、简单启停shell脚本
1、清除docker日志脚本:cleanLog.sh
# 清除日志 ret=`docker ps -a | grep 容器名 | awk '{print $1}'` ret=`ls /var/lib/docker/containers/ | grep "${ret}"` >/var/lib/docker/containers/${ret}/${ret}-json.log
2、启动容器脚本:startDocker.sh
# 启动xxx容器程序 ret=`docker start $(docker ps -a | grep 容器名 | awk '{print $1}')` # 自动显示docker日志 docker logs -f --tail=500 ${ret}
3、停止容器脚本:stopDocker.sh
# 停止xxx容器程序 ret=`docker stop $(docker ps -a | grep 容器名 | awk '{print $1}')` # 显示当前docker运行中容器 docker ps
4、未停止情况下重新启动容器:restartDocker.sh
# 重新启动xxx容器程序 ret=`docker restart $(docker ps -a | grep 容器名 | awk '{print $1}')` # 自动显示docker日志 docker logs -f --tail=500 ${ret}
5、进入容器(退出时不会停止容器):
# 进入xxx容器程序 ret=`docker restart $(docker ps -a | grep 容器名 | awk '{print $1}')` docker exec -it ${ret} /bin/bash