【问题标题】:SQLSTATE[HY000] [2002] Connection refused (SQL: select * from information_schema.tables where table_schema = ms_api_shopSQLSTATE[HY000] [2002] 连接被拒绝 (SQL: select * from information_schema.tables where table_schema = ms_api_shop
【发布时间】:2021-04-21 03:51:21
【问题描述】:

我正在使用 Lumen 和 Docker 来创建简单的 API 进行身份验证。安装 LumenPassport 后,我​​无法迁移数据库。我可以使用 Dbeaver 轻松连接到 MySQL 数据库。 我已经为同样的目的创建了一个 Lumen Docker 项目,它是第二个。第一个工作没有问题。此外,我检查了 MySQL 数据库,ms_api_shop 在那里

错误:

这是我的 docker-compose


services:
  nginx:
    build:
      context: .
      dockerfile: docker/Nginx.Dockerfile
    image: nginx
    ports:
      - 8092:80
    depends_on:
      - fpm
    volumes:
      - ./:/var/www/lumen-docker
    links:
      - mysql

  fpm:
    build:
      context: .
      dockerfile: docker/fpm.Dockerfile
    volumes:
      - ./:/var/www/lumen-docker
    depends_on:
      - mysql
    links:
      - mysql


  mysql:
    image: mysql:5.7
    ports:
      - 33006:3306
    environment:
      - MYSQL_ROOT_PASSWORD=
      - MYSQL_DATABASE=ms_api_shop
      - MYSQL_ROOT_USER=
    volumes:
      - mysql-data:/var/lib/mysql
volumes:
  mysql-data:


和环境:

DB_HOST=mysql
DB_PORT=33006
DB_DATABASE=ms_api_shop
DB_USERNAME=
DB_PASSWORD=

【问题讨论】:

    标签: mysql laravel docker lumen


    【解决方案1】:

    在您的 docker 文件中,您将 33006 容器端口绑定到主机端口的 3306。如果你想访问 MySQL,你应该使用 3306 而不是 33006,就像你在 .env 中所做的那样

    【讨论】:

      【解决方案2】:

      我有一个在 Docker 中运行的 Laravel 应用程序,我的 docker 配置的一部分如下所示:

      但我个人觉得他们应该在一个docker网络内,看下面我docker-compose.yml的最后两行代码:

      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    
      

      【讨论】:

      • 我试过了,还是出现同样的错误:(
      • 拒绝容器并重新构建
      • 我已经做了,我花了4个多小时,甚至删除了项目并重新创建但没有帮助(
      • 您能否发布您的整个docker-compose.yml.env 文件内容?或者可以分享 git repo 的链接?
      【解决方案3】:

      据我所知,docker容器在同一个网络上是可以相互通信的。您似乎还没有在docker-compose 中连接这两个 docker。要从容器中获取网络信息,可以使用以下命令。

      $ docker inspect --format='{{json .NetworkSettings.Networks}}'  <docker_container_name>
      

      如果您需要连接这两个容器,请按照以下步骤操作:

      首先,您创建一个网络

      $ docker network create my-net
      

      其次,将容器连接到网络。

      $ docker network connect my-net <docker_container_name>
      

      不要忘记将这两个容器连接到网络。

      【讨论】:

      • 我完全按照你说的做了,创建了网络流明,将它们与容器连接起来,当我检查时我看到了它。但是迁移时我又遇到了同样的错误(
      猜你喜欢
      • 2020-07-26
      • 2022-10-25
      • 2020-07-29
      • 2021-07-10
      • 2017-05-04
      • 2020-01-22
      • 2017-09-20
      • 2020-03-26
      • 2020-12-04
      相关资源
      最近更新 更多