跟小编玩转Docker到天亮 —— 利用Bind Mouting提高开发调试效率

一、引言

阔爱帅气的小编又来了 , 那么么么么今天所写的文章也是在实际使用docker所遇到的问题。

新开发一个项目、或者新写一个功能需求,那肯定避免不了调试开发,然后测试,测试完又要改源码。

但每次修改一次源码都需要重新build的一下镜像,我滴天,这么麻烦的吗?

如果你也是遇到类似相同的问题,请问继续往下看......

二、数据持久化之Bind Mouting

遇到这个问题小编首先想到的就是,能不能把容器的项目和我本地项目的目录关联一下,了解过docker容器的小伙伴,容器是可以进行读写操作的。

小编之前使用容器搭建了一套Mysql做为测试环境用,但考虑到了数据持久化的问题,最后也是通过把文件持久化的方式存放到本地,这样就不会因为容器的丢失导致数据也没了的情况。

然后小编就看了Bind Mouting,咦~ 这个好像符合我的需求 ,然后小编就使用Nginx镜像容器测试了一下。

  

# 使用nginx做为基础镜像
FROM nginx:latest

# 指定启动容器之后所在当前路径
WORKDIR /usr/share/nginx/html

# 把当前目录下的index.html 拷贝过去
COPY index.html index.html

以上是小编所编写的DockerFile文件内容,然后我们直接build一下,最后生成镜像 。

使用Bind Mouting的关键所在就是启动的时候需要加一个选项 : -v

docker run -d -v $(pwd):/usr/share/nginx/html -p 80:80 --name web 172.0.0.0.1:5000/web

$(pwd) ,这个代表本地电脑的当前目录,小伙伴可以在命令窗口尝试输入pwd,显示的应该是当前所在目录的路径

冒号后面这个路径/usr/share/nginx/html,这个是容器中nginx存放html静态页面的路径,然后两个目录就好像进行了关联绑定。

现在只需要修改本地电脑的index.html,对应容器这个这个目录(/usr/share/nginx/html)下的index.html内容也会随之而更改。

三、实际项目演示

既然方法找到了,小编就随便拿个springboot的项目来试试

需求:在我们修改源代码之后,只需要在开发环境重新编译源码,然后重启容器即可。

准备:小编新建了一个文件夹叫docker-jar(路径在:/var/docker-jar),在使用Maven的install的时候,会自动往这个文件夹添加编译后的源码(也可以直接使用默认targer目录下的也行)

Dockerfile文件内容:build命令小编就不多讲了,最后得到镜像名称是:jiannan/springboot

# 首先我们需要依赖一个JDK
FROM hub.c.163.com/library/java:8-alpine

# 将targer下的jar文件,添加到容器的/jar目录下
ADD target/*.jar /jar/app.jar

# 这个就代表我们容器启动之后需要执行的命令
ENTRYPOINT ["java","-jar","/jar/app.jar"]

启动容器:这里记得加上-v的选项,将两个目录进行关联绑定,后面我们每一次install,jar文件都会自动更新到容器当中。

 docker run -d -p 8080:8080 -v /var/docker-jar:/jar --name web  jiannan/springboot

重启容器:更换后到jar文件,因为我们这个是jar,并不是静态文件,所以我们得重启一下docker容器。

docker restart web(容器ID或者容器名称)

四、最后插两句嘴

这个Bind Mouting最主要的目的是使容器中的文件和本地磁盘某一个路径,两者文件可以相互进行同步,以防容器被删除导致文件也被删除了。

因为我们部署在容器中的程序,可能会有文件上传到功能,如果这个时候你直接保存到容器当中并且没有持久化,就很有可能容器没了,那数据就都没了。

docker持久化的方式当然不止这一种啦,小编下篇docker文章再讲如何持久化mysql镜像中的数据。

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT贱男

喜欢就,喜欢就,就来打赏一点哟

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值