Php MySQL连接访问被拒绝,但只有50%的时间是在使用Nginx代理的Docker中

Php MySQL连接访问被拒绝,但只有50%的时间是在使用Nginx代理的Docker中,php,mysql,docker,nginx,jwilder-nginx-proxy,Php,Mysql,Docker,Nginx,Jwilder Nginx Proxy,我正在尝试让本地开发环境运行多个项目。 经过一些繁重的修补之后,我偶然发现了它,并开始将其应用到我自己的项目中。 每个项目由两个容器组成,一个mysql容器和一个php容器(来自PHPACHE图像) nginx代理是一个在网络上运行的独立容器。我稍微重命名了这个项目,所以在这里它被称为dev-router\u default 我的项目的compose.yml如下所示: version: "3" services: php: build: './.docker/php/' vo

我正在尝试让本地开发环境运行多个项目。 经过一些繁重的修补之后,我偶然发现了它,并开始将其应用到我自己的项目中。 每个项目由两个容器组成,一个mysql容器和一个php容器(来自
PHPACHE
图像)

nginx代理是一个在网络上运行的独立容器。我稍微重命名了这个项目,所以在这里它被称为
dev-router\u default

我的项目的
compose.yml
如下所示:

version: "3"
services:
  php:
    build: './.docker/php/'
    volumes:
      - .:/var/www/html/
    environment:
      - VIRTUAL_HOST=XXX.local
  mysql:
    build: './.docker/mysql/'
    ports:
      - "3309:3306"
    environment:
      MYSQL_DATABASE: XXX
      MYSQL_USER: XXX
      MYSQL_PASSWORD: XXX
      MYSQL_ROOT_PASSWORD: XXX
      VIRTUAL_HOST: XXX.local
networks:
  default:
    external:
      name: dev-router_default
这些文件夹中的
dockerfiles
现在只是基本图像。它们只是存在的,所以我以后可以放大它们

一切都很顺利。我可以访问数据库,我可以加载html和php页面。 然而。每当我加载页面时。我有50%的机会出现此错误:

SQLSTATE[HY000] [1045] Access denied for user
另外50%的页面负载工作正常。 这不是一个错误的密码问题或任何事情。所有设置都保持不变,但不知何故,一个连接被拒绝,另一个连接通过

我有一种直觉,那就是
nginx proxy
有一半的时间没有将我的流量重定向到正确的mysql容器。但我似乎找不到电话的目的地。加载页面时,我会在容器CLI中看到php_1加载的日志弹出窗口。但是mysql_1保持沉默

有人知道是什么导致了这种不一致吗

有没有一种更简单的方法可以使用docker设置一个同时使用多个虚拟主机/域的开发环境


我需要能够访问多个数据库(我现在为每个项目提供一个特定的端口来访问),并为每个项目提供一个唯一的url,该url与
文档\u root

关联。这里的问题是服务的名称。 所有项目都有一个php和一个mysql容器。 我通过服务的名称访问mysql主机(在本例中,所有项目都是mysql)。 主机“mysql”在多个项目中被多次定义。 命名mysql容器projectname mysql修复了它