Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Mysql-Docker:连接问题_Php_Mysql_Docker_Docker Compose - Fatal编程技术网

Php Mysql-Docker:连接问题

Php Mysql-Docker:连接问题,php,mysql,docker,docker-compose,Php,Mysql,Docker,Docker Compose,我的docker-compose.yml如下所示: version: '3.3' services: frontend: build: frontend container_name: yii-frontend ports: - 20080:80 volumes: # Re-use local composer cache via host-volume - ~/.composer-docker/cache:/root/

我的docker-compose.yml如下所示:

version: '3.3'

services:

  frontend:
    build: frontend
    container_name: yii-frontend
    ports:
      - 20080:80
    volumes:
      # Re-use local composer cache via host-volume
      - ~/.composer-docker/cache:/root/.composer/cache:delegated
      # Mount source-code for development
      - ./:/app
    networks:
      - my-marian-net

  backend:
    build: backend
    container_name: yii-backend
    ports:
      - 21080:80
    volumes:
      # Re-use local composer cache via host-volume
      - ~/.composer-docker/cache:/root/.composer/cache:delegated
      # Mount source-code for development
      - ./:/app
    networks:
      - my-marian-net

  db:
    image: mysql:8.0
    container_name: mysql8
    command: --user=root --default-authentication-plugin=mysql_native_password
    restart: always
    environment:
      - MYSQL_ROOT_PASSWORD=verysecret
      - MYSQL_DATABASE=yii2advanced
      - MYSQL_USER=yii2advanced
      - MYSQL_PASSWORD=secret
    ports:
      - 6033:3306
    networks: 
      - my-marian-net

networks: 
  my-marian-net:
    driver: bridge
我收到一条错误消息:

'SQLSTATE[HY000][2002]php_network_getaddresses:getaddrinfo失败: 提供了nodename或servname,或未知'

我尝试过的解决方案:

  • 从后端和前端容器Ping到mysql8:docker exec-ti yii前端Ping mysql8(它工作!)

  • 手动将每个容器连接到同一网络(my marian net)docker网络连接my marian net mysql8(每个容器相同)

  • 我已经连接到mysql容器并在那里测试连接,它可以工作

  • 我已经从容器连接到mysql8容器MySQL服务,它可以正常工作

到目前为止,还没找到联系。在我的代码中,我使用“db”作为主机名,因为我使用的是网桥模式

在尝试了不同的解决方案后,我将问题与 在码头外,有什么建议吗


我用的是macOS Mojave。Docker版本19.03

问题比我想象的要简单,来自外部容器的“db”服务不存在,因此无法连接

将来,当我从本地运行控制台命令时,我会将数据库连接中的主机更改为使用localhost而不是“db”,或者连接到容器本身并从内部运行它们


感谢@Smankusors的帮助。

问题比我想象的要简单,来自外部容器的“db”服务不存在,因此无法连接

将来,当我从本地运行控制台命令时,我会将数据库连接中的主机更改为使用localhost而不是“db”,或者连接到容器本身并从内部运行它们


感谢@Smankusors的帮助。

你说,
ping mysql8
就行了。然后您没有尝试使用“mysql8”作为主机名而不是“db”?@Smankusors在连接中您需要使用服务的名称,即“db”。我试过mysql8以防万一,但运气不好。这个问题似乎是我的本地网络和网桥网络之间的问题,那里似乎没有通信。可能是Docker的内部DNS问题,你的Docker版本是什么?你能重新启动你的电脑吗?我正在使用macos Mojave中的docker 19.03。这可能是一个dns问题,但如何测试?哦,是的,顺便说一句,你的yii如何连接到数据库?数据库配置?连接字符串?您说过,
ping mysql8
,它可以工作。然后您没有尝试使用“mysql8”作为主机名而不是“db”?@Smankusors在连接中您需要使用服务的名称,即“db”。我试过mysql8以防万一,但运气不好。这个问题似乎是我的本地网络和网桥网络之间的问题,那里似乎没有通信。可能是Docker的内部DNS问题,你的Docker版本是什么?你能重新启动你的电脑吗?我正在使用macos Mojave中的docker 19.03。这可能是一个dns问题,但如何测试?哦,是的,顺便说一句,你的yii如何连接到数据库?数据库配置?连接字符串?