簡體   English   中英

Docker Mysql 與 Laravel 的連接被拒絕

[英]Connection refused on Docker Mysql with Laravel

我無法從我的 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

my.env 的相關部分如下所示:

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

我嘗試刪除所有內容並再次構建圖像,但無濟於事。

你們能看出我的錯誤嗎?

提前致謝

在 Docker for windows 上,您可以使用 host.docker.internal 訪問主機 ZA12A3079E14CED0926EAZ9。

我在評論中回答了這個問題,但我想我會把它復制為一個正確的答案,以幫助將來發現這個問題的任何人,並讓他們閱讀所有評論

要提取 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

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

DB_HOST=172.18.0.2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM