Docker,同一网络上的多个MySQL容器 - 间歇性连接问题

时间:2017-11-17 14:04:42

标签: mysql docker docker-compose

对于docker来说相当新,但我有2个项目 - 项目-a和项目-b,我想在本地使用docker开发,并使用nginx-proxy容器在它们之间进行路由。

到目前为止,我有:

1)创建一个名为' my-network'的新docker网络。在桥接模式下。 2)启动nginx-proxy容器,并配置dnsmasq以路由' .dev'域到个别容器(这一切都很好) 3)使用以下docker-compose.yml文件启动项目-a

version: '3.2'

services:
  web:
    image: brettt89/silverstripe-web
    working_dir: /var/www
    restart: unless-stopped
    volumes:
      - .:/var/www/html
    environment:
      - VIRTUAL_HOST=project-a.dev

  db:
    image: mysql
    volumes:
      - db-data:/var/lib/mysql
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: password

volumes:
  db-data:

networks:
  default:
    external:
      name: my-network

这一切都按预期的方式使用project-a.dev到此容器的nginx-proxy路由请求。 MySQL查询按预期工作。

但是,一旦我使用相同的docker-compose文件启动project-b(除了将VIRTUAL_HOST env变量更改为project-b.dev),问题就会开始。我可以成功导航到project-b.dev,但是我在页面加载和刷新时会出现间歇性的数据库连接错误 - 同样的错误也开始在project-a.dev上发生

有没有人有任何想法我做错了什么?

1 个答案:

答案 0 :(得分:0)

当您使用相同的docker compose时,您有2个数据库容器,每个项目1个。但他们使用相同的音量。我认为这可能是一个问题。尝试修改巡视项目B的卷名(例如db-data-b)。

*编辑好答案:* 尽量不要使用桥接网络或检查容器以避免IP冲突。