Docker多容器共享网络

近期将应用容器化的过程中,由于多个不同的Docker Compose容器需要共用一个Mysql实例,并限制外部访问。 以下为最终解决方案。

1. docker创建公共network

sudo docker network create mysql-shared

2. compose内添加external netwrok

  • DB容器以及需要连接到数据库的容器都添加
services:
  app:  
    networks: # 显式添加Network
      - mysql-shared

networks: 
  mysql-shared: # 声明外部网络
    external: true
    name: mysql-shared

3. DB compose内添加hostname

services:
  db:
    hostname: "db.test.local"

4. 应用容器内使用db hostname获取地址

举例:Golang内使用 username:password@tcp(db.test.local:3306)/app-db?parseTime=true 连接到Mysql