Docker lumen应用程序抛出php\u网络\u getaddresses:getaddrinfo失败:名称或服务未知
首先,我要说我对Docker是全新的。我正试图用现有的Lumen microservice为Docker做一个概念验证,但似乎无法让本地的mysql容器正常工作 运行php artisan migrate时,出现以下错误: SQLSTATE[HY000][2002]php_network_getaddresses:getaddrinfo失败:名称或服务未知 这是我的docker-compose.yml文件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:
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
容器,并管理pingdb
主机。然后我安装了MySQL客户端并设法连接到数据库。您确定指定了正确的数据库主机名吗?好,现在开始工作。因此,我对迁移进行了注释,发现端口3306上存在冲突(目前我的本地开发环境正在使用该端口)。我将docker compose文件中的端口更新为9906:3306。仍然会出现一些错误,就像我之前尝试设置此端口时一样。事实证明,当我将docker中的端口更改为9906:3306时,我不应该更新Lumen中的设置以指向端口9906。我猜链接的容器使用原始端口(3306),我的计算机使用映射的端口(9906)访问容器?