文章 cheng yu · 1 小时 前 2m read

SQLgateway-M7-split --

我之前关于SQLgateway 迁移的系列文章,是一篇篇幅较长的文章,介绍了
了可用的各种方案。不过它既不易操作,又难以追踪。
因此,我的挑战是:如何“吃掉一头大象”?>> 把它切成小块!!

我的目标是兼顾两点:既能独立创建每个容器,又能
同时支持一键构建整个集合。因此现在可以
在不影响其他容器的情况下修复单个容器的问题。

结果证明,这变成了一次关于 Docker 网络和脚本编写的实践,

  • 每次执行 Docker-Compose Up 都会创建一个独立的网络。因此,与
    前面的示例那样简单地启动,也会生成8个彼此隔离的网络。
    解决方案:定义一个公共网络并将容器加入其中。
    现在 TCP/JDBC 可以找到服务器,而且我们再也不会遇到端口冲突了
  • 为了启动所有容器而连续执行 8 次 `docker-compose up -d` 实在不太好玩 
  • 解决方案:Docker Compose 提供了一个 INCLUDE 指令。只需点击一下,一切就搞定了。
include:   
  - ./iris1/docker-compose.yml   
  - ./cache/docker-compose.yml    
  - ./ibmDB2/docker-compose.yml   
  - ./iris2/docker-compose.yml    
  - ./MSsql/docker-compose.yml   
  - ./mysql/docker-compose.yml   
  - ./ORACLE/docker-compose.yml   
  - ./postgres/docker-compose.yml

现在,您可以从顶层创建所有容器,或进入
子目录中,针对单个启动项进行操作。这是一项
用于调试或清理容器。
但存在一个我尚未解决的实际限制:
如果将MSSQL容器与其他容器一起构建在“团队”中,它将无法正常工作。
不过,如果将其隔离构建且没有严重资源竞争,它就能正常运行。  
早在下载过程中,MS SQL 就表现得像个懒惰的混蛋,如果 
如果它是我的员工,我早就开除它了,并会寻找更好的迁移方案。 🥸