流明/ Docker / MySQL(SQLSTATE [HY000] [2002]连接拒绝)但我可以在外部连接

问题描述 投票:1回答:1

在这个上迷失了我的思绪。

我在Docker容器中有一个流明和MySQL设置。大多数事情都很好。我可以运行容器并通过浏览器访问Lumen。我可以通过Sequel Pro访问MySQL,没问题。我可以运行php artisan migrate,它工作正常。

但是如果我尝试在浏览器中通过Lumen做任何事情,它将无法连接到数据库,它会给我连接拒绝错误。

我正在使用Lumen 5.7.7和.env文件看起来像这样:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=test
DB_USERNAME=root
DB_PASSWORD=root

docker-compose.yml看起来像这样:

version: '3'
services:
  api:
    build:
      context: .
      dockerfile: .docker/Dockerfile
    image: laravel-docker
    ports:
      - 8080:80
    depends_on:
      - mysqldb
    volumes:
      - .:/srv/app
    # container_name:
  mysqldb:
    image: mysql:5.7
    container_name: mysqldb
    command: mysqld --user=root --verbose
    volumes:
       - ./schemadump.sql:/docker-entrypoint-initdb.d/schemadump.sql
    ports:
      - 3306:3306
    environment:
      MYSQL_DATABASE: test
      MYSQL_USER: test
      MYSQL_PASSWORD: test
      MYSQL_ROOT_PASSWORD: root
      MYSQL_ALLOW_EMPTY_PASSWORD: "yes"

编辑:在网站和命令行上运行phpinfo()并意识到它们甚至不是相同的版本,更不用说完全相同的细节了。这可能是问题吗?再看一下......

php mysql docker lumen
1个回答
0
投票

嗯,它现在正在运作,有点像。我现在已经从浏览器而不是命令行工作了,我可以使用它。从上面的评论看,似乎缺少将api连接到数据库的“链接”部分是问题。 .env文件没有变化,但docker-compose.yml现在看起来像这样:

version: '3'
services:
  api:
    build:
      context: .
      dockerfile: .docker/Dockerfile
    image: laravel-docker
    ports:
      - 8080:80
    links:
      - mysql
    volumes:
      - .:/srv/app
    environment:
      DB_HOST: mysql
      DB_DATABASE: test
      DB_USERNAME: test
      DB_PASSWORD: test
  mysql:
    image: mysql:5.7
    ports:
      - 13306:3306
    environment:
      MYSQL_DATABASE: test
      MYSQL_USER: test
      MYSQL_PASSWORD: test
      MYSQL_ROOT_PASSWORD: root

将“environment”部分添加到yml文件的api部分。这有所帮助。并更改了端口,因此与内部端口相比,它具有不同的外部端口。不是100%哪个部分使它正常工作,但它现在工作正常,我不打算更改它。

© www.soinside.com 2019 - 2024. All rights reserved.