Docker lumen应用程序抛出php\u网络\u getaddresses:getaddrinfo失败:名称或服务未知

Docker lumen应用程序抛出php\u网络\u getaddresses:getaddrinfo失败:名称或服务未知,php,mysql,laravel,docker,lumen,Php,Mysql,Laravel,Docker,Lumen,首先,我要说我对Docker是全新的。我正试图用现有的Lumen microservice为Docker做一个概念验证,但似乎无法让本地的mysql容器正常工作 运行php artisan migrate时,出现以下错误: SQLSTATE[HY000][2002]php_network_getaddresses:getaddrinfo失败:名称或服务未知 这是我的docker-compose.yml文件 version: '3.7' services: # Nginx web:

首先,我要说我对Docker是全新的。我正试图用现有的Lumen microservice为Docker做一个概念验证,但似乎无法让本地的mysql容器正常工作

运行php artisan migrate时,出现以下错误:

SQLSTATE[HY000][2002]php_network_getaddresses:getaddrinfo失败:名称或服务未知

这是我的docker-compose.yml文件

version: '3.7'

services:
  # Nginx
  web:
    image: nginx:latest
    ports:
      - '8080:80'
    volumes:
      - .:/app
      - .docker/nginx/site.conf:/etc/nginx/conf.d/default.conf
    links:
      - php

  # Database
  db:
    container_name: db
    image: mysql:5.7.24
    command: --default-authentication-plugin=mysql_native_password
    restart: always
    ports:
    - '3306:3306'
    environment:
      MYSQL_ROOT_PASSWORD: local_mysql_password
      MYSQL_DATABASE: partners

  # PHP
  php:
    build: .
    volumes:
      - .:/app
    links:
      - db
    depends_on:
      - db
以及我的php图像Dockerfile

FROM php:7.2-fpm

ADD . /app

WORKDIR /app

RUN apt-get update \
 && apt-get install -y git libpng-dev libxml2-dev libzip-dev zip \
 && docker-php-ext-configure zip --with-libzip \
 && docker-php-ext-install \
    pdo_mysql \
    gd \
    zip \
 && curl -sS https://getcomposer.org/installer \
  | php -- --install-dir=/usr/local/bin --filename=composer

RUN composer install

RUN php artisan migrate
我在.env文件中为DB连接使用以下内容

DB_CONNECTION=mysql
DB_HOST=db
DB_PORT=3306
DB_DATABASE=partners
DB_USERNAME=root
DB_PASSWORD=local_mysql_password

我尝试过调整端口、更改服务名称、容器名称、链接/依赖设置,以及一些我现在记不起来的其他事情。我在这里、reddit和github尝试了多种解决方案,但都没有成功。有什么基本的东西我忽略了吗?

所有的容器都在运行吗?docker ps的输出是什么?错误消息是否有任何其他详细信息,如它试图连接到的主机名?看起来容器没有运行,因为
docker ps
没有显示任何容器。我猜是因为
docker compose up-d--build
失败了,它没有完成容器的创建吗?不,错误消息中没有主机名。没有太多的信息。我会首先尝试禁用迁移,并确保所有容器成功启动。然后验证是否可以从主机连接到数据库。之后,您可以尝试使用
docker exec-it bash
登录
php
容器,并尝试ping您的
db
容器,运行迁移。我运行了一个简化版本的docker compose文件,登录
php
容器,并管理ping
db
主机。然后我安装了MySQL客户端并设法连接到数据库。您确定指定了正确的数据库主机名吗?好,现在开始工作。因此,我对迁移进行了注释,发现端口3306上存在冲突(目前我的本地开发环境正在使用该端口)。我将docker compose文件中的端口更新为9906:3306。仍然会出现一些错误,就像我之前尝试设置此端口时一样。事实证明,当我将docker中的端口更改为9906:3306时,我不应该更新Lumen中的设置以指向端口9906。我猜链接的容器使用原始端口(3306),我的计算机使用映射的端口(9906)访问容器?