简单dockerfile挂载springboot项目 + 简单启停shell脚本


一、项目挂载:

一个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

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM