SQLSTATE [HY000] [2002]在laravel和docker设置中拒绝连接

简:

我正在尝试为laravel开发建立一个docker环境。我遇到了migration命令的问题。我正在粘贴她的撰写文件和环境文件。我认为我的设置是正确的,因为如果我从控制器执行正常的数据库操作,则数据库连接可以正常工作。仅使用migrate命令给出错误。我的撰写文件中也有工匠,因为我想将所有内容都保留在容器中。


networks:
  laravel:

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

  mysql:
    image: mysql:5.7.29
    container_name: mysql
    restart: unless-stopped
    tty: true
    ports:
      - "3306:3306"
    environment:
      MYSQL_DATABASE: homestead
      MYSQL_USER: homestead
      MYSQL_PASSWORD: secret
      MYSQL_ROOT_PASSWORD: secret
      SERVICE_TAGS: dev
      SERVICE_NAME: mysql
    volumes:
      - ./mysql:/var/lib/mysql
    networks:
      - laravel

  php:
    build:
      context: .
      dockerfile: Dockerfile
    container_name: php
    volumes:
      - ./src:/var/www/html
      - ./src/php/ini:/usr/local/etc/php
    ports:
      - "9000:9000"
    networks:
      - laravel

  artisan:
    build:
      context: .
      dockerfile: Dockerfile
    container_name: artisan
    volumes:
      - ./src:/var/www/html
    depends_on:
      - mysql
    working_dir: /var/www/html
    entrypoint: ['php', '/var/www/html/artisan']
    networks:
      - laravel

我的环境文件看起来像这样

DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=root
DB_PASSWORD=secret

我的docker文件看起来像

FROM php:7.3-fpm-alpine
WORKDIR /var/www/html
RUN docker-php-ext-install mysqli pdo pdo_mysql && docker-php-ext-enable mysqli

当我跑步

docker-compose run --rm artisan  migrate

然后我得到

SQLSTATE[HY000] [2002] Connection refused (SQL: select * from information_schema.tables where table_schema = homestead and table_name = migrations and table_type = 'BASE TABLE')

知道这里可能出什么问题吗?

我还有一件事要分享,因此我正在编辑我的问题。

我执行了这个命令。

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

查找所有容器的IP地址。

我使用了DB_HOST中的IP地址,如下所示

DB_CONNECTION=mysql
DB_HOST=172.19.0.2
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=root
DB_PASSWORD=secret

它奏效了,但这不是永久解决方案。

docker无法以某种方式将容器名称映射到内部IP。

我不知道根本原因。

丹尼尔·梅萨(Daniel Mesa):

我可以看到您尚未为laravel网络配置驱动程序。您可以尝试将驱动程序桥接器放入Laravel网络中

networks:
  laravel:
    driver: bridge

然后在您的.env文件中,您可以使用容器名称代替IP地址

DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=root
DB_PASSWORD=secret

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Laravel SQLSTATE [HY000] [2002]连接被拒绝| 锻造 AWS

Laravel Nova + Homestead SQLSTATE [HY000] [2002]连接被拒绝

RDS Laravel SQLSTATE[HY000] [2002] 连接被拒绝

Laravel 7 SQLSTATE [HY000] [2002]连接被拒绝

Laravel:SQLSTATE [HY000] [2002]连接被拒绝

Laravel SQLSTATE [HY000] [2002]连接被拒绝,但修改过

PHP + MYSQL + Laravel - “SQLSTATE[HY000] [2002] 连接被拒绝”

SQLSTATE[HY000] [2002] 连接被拒绝 Laravel 8

如何修复 Laravel 中的“SQLSTATE[HY000] [2002] 连接被拒绝”错误(docker 中的工匠迁移)

SQLSTATE [HY000] [2002]在Docker中运行多个laravel项目时,连接被拒绝

PHP连接失败:SQLSTATE [HY000] [2002]连接被拒绝

Gitlab CI Symfony:SQLSTATE [HY000] [2002]连接被拒绝

PHP PDO:SQLSTATE [HY000] [2002]连接被拒绝

SQLSTATE [HY000] [1040]连接太多

laravel迁移SQLSTATE [HY000]

61SQLSTATE[HY000] [2002] Docker 容器 PHP/Apache 中的连接被拒绝

Laravel 5.7 SQLSTATE[HY000] [2002] 无法建立连接

SQLSTATE[HY000] [2002] 无法建立连接

Symfony4 / Docker:SQLSTATE [HY000] [2002]连接被拒绝

Laravel:SQLSTATE HY000 2002无法建立连接,因为目标机器主动拒绝了它

SQLSTATE [HY000] [2002] Laravel宅基地内的连接被拒绝

Xampp Linux:PDOException:SQLSTATE [HY000] [2002]在lock_may_be_available()错误中拒绝连接

SQLSTATE [HY000] [2002]仅在浏览器中拒绝连接

SQLSTATE [HY000] [2002]连接被拒绝。Laravel API使用WSL2 Ubuntu 18.04托管在Docker上

SQLSTATE HY000 2002在运行bake命令时

SQLSTATE[HY000] [2002] php_network_getaddresses

SQLSTATE [HY000] [1045]用户'root'@'localhost'的访问被拒绝

托管项目时的连接问题:SQLSTATE[HY000] [2002] 连接被拒绝

SQLSTATE [HY000]:常规错误:Laravel发生2053错误