質問編集履歴

1 docker-composeとlaravelの.env追記

xin

xin score 17

2018/05/27 22:04  投稿

docker php7からmysqlに接続できない
お世話になっております。
今回、dokcerでnginx、php、mysqlのコンテナを立ててlaravelの開発環境を作ってみたのですが、migrationでエラーが出てしまいました。
<環境>
docker for mac: Version 18.03.0-ce-mac60
php: 7.2.5
mysql: 5.7.19
laravel: 5.5
node: 8.11.1
<構成>
![イメージ説明](31540efe93a140c29acb23a52d5f6f0d.png)
・**db-data**: データ格納場所
・**nginx: defaut.conf**
```
server {
   listen 80;
   server_name localhost;
   charset utf-8;
   root /var/www/src/public;
   index index.php;
   access_log /var/log/nginx/access.log;
   error_log /var/log/nginx/error.log;
   location / {
       try_files $uri $uri/ /index.php$query_string;
   }
   location ~ \.php$ {
       fastcgi_split_path_info ^(.+\.php)(\.+)$;
       fastcgi_pass php:9000;
       fastcgi_index index.php;
       include fastcgi_params;
       fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
       fastcgi_param PATH_INFO $fastcgi_path_info;
   }
}
```
・**src**: laravelプロジェクトフォルダ
・**php: Dockerfile**
```
FROM php:7.2.5-fpm-alpine3.7
RUN docker-php-ext-install pdo_mysql mysqli mbstring
```
・**docker-compose.yml**
```
version: '3'
services:
 nginx:
   image: nginx:1.14.0-alpine
   container_name: "laravel-nginx"
   ports:
     - "80:80"
   depends_on:
     - php
   volumes:
     - ./nginx/default.conf:/etc/nginx/conf.d/default.conf
     - ./src:/var/www/src
 php:
   build: ./php
   container_name: "laravel-php"
   env_file: .env
   environment:
     DATABASE_HOST: mysql
   depends_on:
     - mysql
   volumes:
     - ./src:/var/www/src
 mysql:
   image: mysql:5.7.19
   env_file: .env
   ports:
     - "3306:3306"
   volumes:
     - ./db-data:/var/lib/mysql
```
---
**エラー文言**
```
~/src ❯❯❯ php artisan migrate                                                                                                                                              (master)
In Connection.php line 664:
                                                                                                                                                                                     
 SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: nodename nor servname provided, or not known (SQL: select * from information_schema.tables where table_schema 
 = dev_laravel and table_name = migrations)                                                                                                                                         
                                                                                                                                                                                     
In Connector.php line 67:
                                                                                                                   
 SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: nodename nor servname provided, or not known 
                                                                                                                   
In Connector.php line 67:
                                                                                                                 
 PDO::__construct(): php_network_getaddresses: getaddrinfo failed: nodename nor servname provided, or not known 
```
sequel proでmysqlに接続できたので、単体のコンテナでは動作しているようなのですが、phpから操作するとエラーが出てしまいました。dockerもlaravelも始めたばかりなのでどこかでミスしているのかもしれないのですが、見つけられず、、どなたかご教示いただければと思います。
sequel proでmysqlに接続できたので、単体のコンテナでは動作しているようなのですが、phpから操作するとエラーが出てしまいました。dockerもlaravelも始めたばかりなのでどこかでミスしているのかもしれないのですが、見つけられず、、どなたかご教示いただければと思います。
追記:
**.env(laravel)** (###でマスク)
```
APP_NAME=Laravel
APP_ENV=local
APP_KEY=###########
APP_DEBUG=true
APP_LOG_LEVEL=debug
APP_URL=http://localhost
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=###########
DB_USERNAME=##########
DB_PASSWORD=##########
BROADCAST_DRIVER=log
CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=sync
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
```
**.env(docker-compose)** (###でマスク)
```
MYSQL_RANDOM_ROOT_PASSWORD=yes
MYSQL_DATABASE=#######
MYSQL_USER=######
MYSQL_PASSWORD=#######
MYSQL_ROOT_PASSWORD=#######
```
dockerとlaravelのMYDQL_DATABASE、 MYSQL_USER、MYSQL_PASSWORDは同じものを設定しました。
  • PHP

    30597 questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • MySQL

    9248 questions

    MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

  • Docker

    1952 questions

    Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る