Dockerfile实现容器构建、jar包更新、项目重启(公网和内网)

Dockerfile的关键字就不一一列举了

直接上干货

公网情况下

Dockerfile

#依赖的父镜像
FROM openjdk:8
#作者
MAINTAINER mjz
#容器暴露的端口 即jar程序中运行的端口
EXPOSE 8080
#设置时区
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone

#设置编码
ENV LANG C.UTF-8

#执行shell脚本
CMD ["sh","-c","/home/data/start.sh"]

CMD中执行的是java启动脚本,其中路径:/home/data是docker容器内部路径,启动时容器与宿主机进行映射

start.sh

java -Dfileencoding=utf-8 -jar /home/data/jar包名称.jar>>/home/data/logs.log

其中jar包所在地址和日志打印地址也是容器内部地址,启动时容器与宿主机进行映射

build.sh

#编译Dockerfile文件
docker build -t java .
#启动容器
docker run -d --restart always --name java -p 8080:8080 -v /home/java_backend:/home/data java

delete.sh

期间如果构建出错,需要停止容器、删除容器、删除镜像,为了偷懒,写了删除的脚本

#停止容器
docker stop java
#删除容器
docker rm java
#删除镜像
docker rmi java

正常情况下这时docker容器已经起来了,可以输入命令查看docker日志,也可以查看jar运行时的日志

docker运行日志命令

#查看容器日志
docker logs 容器名
#查看容器实时日志
docker logs -f 容器名

jar包运行日志(在start.sh脚本中将jar包日志输出到了logs.log,所以命令如下)

tail -100f logs.log

更新jar包

只需要把宿主机jar包删除,或者最新的jar包改成在start.sh中的jar包名称,再重启docker容器即可

重启容器命令

docker restart java

也可以把重启容器的命令写到restart.sh脚本中

重要提醒,以上文件和jar包必须再同一目录下!!!

重要提醒,以上文件和jar包必须再同一目录下!!!

重要提醒,以上文件和jar包必须再同一目录下!!!

内网情况下

准备条件:需要将提前准备好的tar镜像放在宿主机下

将进行打包成tar文件命令

docker save -o java.tar java

其中java是镜像名,java.tar是要打包成的镜像包

然后将java.tar进行载入,命令如下

docker load -i java.tar

最后输入如下命令,查看是否载入成功

docker images

具体操作可以查看:docker进阶(docker容器创建和迁移)

Dockerfile

#依赖的父镜像
FROM java
#作者
MAINTAINER mjz
#容器暴露的端口 即jar程序中运行的端口
EXPOSE 8080
#设置时区
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone

#设置编码
ENV LANG C.UTF-8

#执行shell脚本
CMD ["sh","-c","/home/data/start.sh"]

与公网不同,内网FROM依赖的是刚刚载入的镜像

 start.sh 同上

java -Dfileencoding=utf-8 -jar /home/data/jar包名称.jar>>/home/data/logs.log

build.sh

#编译Dockerfile文件
docker build -t java_backend .
#启动容器
docker run -d --restart always --name java_backend -p 8080:8080 -v /home/java_backend:/home/data java_backend

注意:容器启动时一定要用最新build出来的镜像,即java_backend,之前载入的镜像不一定适用于当前的情况(因为之前的镜像有可能也是Dockerfile构建出来的,这里Dockerfile文件重新写了),不然查询容器日志会报如下错误

然后查看镜像,发现多了一个,

这时已经可以把之前载入的删掉了,或者留着也行,以防止后面执行delete.sh时的误操作

 delete.sh

期间如果构建出错,需要停止容器、删除容器、删除镜像,为了偷懒,写了删除的脚本

#停止容器
docker stop java_backend
#删除容器
docker rm java_backend
#删除镜像
docker rmi java_backend

正常情况下这时docker容器已经起来了,可以输入命令查看docker日志,也可以查看jar运行时的日志

docker运行日志命令

#查看容器日志
docker logs 容器名
#查看容器实时日志
docker logs -f 容器名

jar包运行日志(在start.sh脚本中将jar包日志输出到了logs.log,所以命令如下)

tail -100f logs.log

更新jar包

只需要把宿主机jar包删除,或者最新的jar包改成在start.sh中的jar包名称,再重启docker容器即可

重启容器命令

docker restart java_backend

也可以把重启容器的命令写到restart.sh脚本中

如此,内网情况下构建容器就完成了

补充

docker inspect 容器名

这个命令可以查看容器的配置信息,如下图

修改配置就是在宿主机上找到如下地址进行修改

  • 10
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值