Gar*_*ers 5 php mysql laravel docker lumen
我首先要说我是 Docker 的新手。我正在尝试使用现有的 Lumen 微服务对 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
Run Code Online (Sandbox Code Playgroud)
我的 Dockerfile 用于 php 图像
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
Run Code Online (Sandbox Code Playgroud)
我在我的 .env 文件中使用以下内容进行数据库连接
DB_CONNECTION=mysql
DB_HOST=db
DB_PORT=3306
DB_DATABASE=partners
DB_USERNAME=root
DB_PASSWORD=local_mysql_password
Run Code Online (Sandbox Code Playgroud)
我尝试过调整端口、更改服务名称、容器名称、链接/depends_on 设置,以及其他一些我现在想不起来的事情。我从这里、reddit 和 github 中尝试了多种解决方案,但都没有奏效。我忽略了一些基本的东西吗?