【问题标题】:Connection refused on Docker Mysql with Laravel使用 Laravel 在 Docker Mysql 上连接被拒绝
【发布时间】:2020-01-24 18:06:32
【问题描述】:

我无法从我的 php/laravel 容器连接到 mysql 数据库。我的连接一直被拒绝。不过,Mysql Workbench 的连接工作得很好。

我的 docker-compose 看起来像这样:

services:
  nginx:
    image: nginx:stable-alpine
    container_name: nginx
    ports:
      - "8080:80"
    volumes:
      - ./src:/var/www
      - ./nginx/default.conf:/etc/nginx/conf.d/default.conf
    depends_on:
      - php
      - mysql
    networks:
      - laravel

  mysql:
    image: mysql:5.7.22
    container_name: mysql
    restart: unless-stopped
    tty: true
    ports:
      - "3306:3306"
    environment:
      MYSQL_DATABASE: project_db
      MYSQL_USER: dev
      MYSQL_PASSWORD: dev
      MYSQL_ROOT_PASSWORD: dev
      SERVICE_TAGS: dev
    networks:
      - laravel
  php:
    build:
      context: .
      dockerfile: Dockerfile
    container_name: php_node
    volumes:
      - ./src:/var/www
    ports:
      - "9000:9000"
    networks:
      - laravel

我的 .env 的相关部分如下所示:

DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=project_db
DB_USERNAME=root
DB_PASSWORD=dev

我尝试删除所有内容并重新构建映像,但无济于事。

你们能发现我的错误吗?

提前致谢

【问题讨论】:

  • 没用过reading this article你需要在composer文件末尾定义网络networks: laravel: driver: bridge。 (他们使用app-network 而不是laravel
  • 我试过了,但它仍然抛出连接被拒绝错误
  • mysql 是否允许来自任何 IP 地址的连接,或者是否受到限制。您的请求将来自其他容器 IP,而 Workbench 来自主机。
  • 尝试 172.17.0.1 作为 .env 文件中的 DB_HOST。
  • @Jonas 这很奇怪,它通常是主机的相同 IP。你能看看这里并确认容器主机确实在改变nickjanetakis.com/blog/…

标签: php mysql laravel docker


【解决方案1】:

要提取 docker 容器名称及其 IP,请在终端中使用以下命令:

docker inspect -f '{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq)

它会显示类似的内容:

/nginx - 172.18.0.4
/php - 172.18.0.3
/mysql - 172.18.0.2

然后在你的 .env 文件中使用 mysql 容器 ip

DB_HOST=172.18.0.2

【讨论】:

    【解决方案2】:

    在 Docker for windows 上,您可以使用 host.docker.internal 访问主机 IP。

    我在 cmets 中回答了这个问题,但我认为我会将其复制为正确的答案,以帮助将来发现此问题的任何人并让他们阅读所有 cmets

    【讨论】:

      猜你喜欢
      • 2017-10-13
      • 2020-07-04
      • 2020-10-07
      • 2018-06-08
      • 2020-01-19
      • 2016-03-08
      • 2020-10-08
      • 1970-01-01
      • 2021-06-24
      相关资源
      最近更新 更多