简体   繁体   English

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

[英]Docker, multiple MySQL containers on same network - intermittent connection problems

Fairly new to docker, but I have 2 projects - project-a and project-b, I would like to develop on them both locally using docker, with an nginx-proxy container to route between them. 对Docker来说还算是新手,但是我有2个项目-project-a和project-b,我想使用docker在本地进行开发,并使用nginx-proxy容器在它们之间进行路由。

So far I have: 到目前为止,我有:

1) Create a new docker network called 'my-network' in bridge mode. 1)在桥接模式下创建一个名为“ my-network”的新码头网络。 2) Started up nginx-proxy container, and configured dnsmasq to route '.dev' domains to individual containers (this all works fine) 3) Starting up project-a with the following docker-compose.yml file 2)启动nginx-proxy容器,并将dnsmasq配置为将'.dev'域路由到各个容器(这一切正常)3)使用以下docker-compose.yml文件启动project-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

This all works as expected with nginx-proxy routing requests for project-a.dev through to this container. 所有这些都可以通过project-a.dev的Nginx代理路由请求传递到此容器。 MySQL queries work as expected. MySQL查询按预期工作。

However, once I start project-b with the same docker-compose file (except changing the VIRTUAL_HOST env variable to project-b.dev) the problems begin. 但是,一旦我使用相同的docker-compose文件启动project-b(将VIRTUAL_HOST env变量更改为project-b.dev除外),问题就开始了。 I can successfully navigate to project-b.dev, however I get intermittent database connection errors across page loads and refreshes - the same errors also start to occur on project-a.dev 我可以成功导航到project-b.dev,但是在页面加载和刷新时出现间歇性的数据库连接错误-在project-a.dev上也开始出现相同的错误

Does anyone have any ideas what I'm doing wrong? 有人知道我在做什么错吗?

As you use the same docker compose, you have 2 database containers, 1 for each project. 当您使用相同的docker compose时,您有2个数据库容器,每个项目1个。 But they use the same volume. 但是它们使用相同的音量。 I think it can be a problem. 我认为这可能是个问题。 Try to modify the volume name for tour project B (db-data-b for example). 尝试修改游览项目B的卷名(例如db-data-b)。

*EDIT for the good answer: * Try not to use the bridged network or inspect containers to avoid IP conflicts. *编辑以获得最佳答案:*尽量不要使用桥接网络或检查容器,以避免IP冲突。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM