谈起docker ,大概从14年工作时就开始接触使用,那时刚好有一个同事作docker 的分享,自己开始学习使用,后来16年自己也做过docker 的分享,同事们反馈干货很多,当时做的那个docker的ppt 至今还留着。
最近这几天,由于我们的model serving 要不断迁移机器,其实可以想象到docker 是最为便利,你哪怕迁移到海外 docker都可以一键顺利部署。
那天作了一些思考,当一个新人要使用docker 部署微服务三件套时,可能要碰到的一些问题,
先谈谈mysql redis:
其实mysql redis 的docker部署,最重要的其实就是数据的持久化,
所以这个时候 --volume -v 将 宿主机 的磁盘目录映射到容器中,可以多个,这个时候我们把 mysql 数据库落盘路径 /var/lib/mysql 映射到主机上即可。这样下次即使容器被销毁了,再次重启,只要路径还是原来的路径,原来建的库表和插入的数据还会原封不动的存在并加载。
springboot dao service 逻辑不受影响,只要可以连接数据库就没有打问题,这个时候需要 数据库 暴露 相关的请求端口 和 宿主机 映射,我们连接数据库,可以以 ip 为 0.0.0.0 来连接,端口直接使用 已经映射的宿主机端口即可。-p 5000:8080
springboot 前端 web req 其实就是ip 和端口受点 影响,这个时候 把port 映射出去到宿主机端口即可,我们在本机 直接使用localhost:port/reqPath 即可请求到,当然远程访问也没有问题 的,使用 换成 宿主机的ip 即可
另外你本机本身就有 mysql redis 客户端,我们当然可以使用 客户端工具连接到它,
当然可以其他的可视化组件远程连接它,就像在连接一个本地的mysql 一样。
在springboot 微服务的兴起,多个服务通信问题也是棘手的,尤其在容器中 docker 原来时使用--link ,有点简陋,后来有了 --network,这个相当于为多个服务预先建立了一条网络专线,所有服务都可以在这个虚拟网络中 畅通有无。
谈谈 Dockerfile
dockerfile 作为一个建构脚本,其实有点类似 puppet ansible 这类工具。Dockerfile命令不超过30个,统统大写,以前很抗拒使用,大概那个时候 写shell script 不是很溜,这几天 细细尝试,写起来 很是很顺溜。为了保留日后可以复用,基本都统统push 到了docker 的私有仓库。
网友评论