質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
MySQL

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

PHP

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

Docker

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

受付中

docker php7からmysqlに接続できない

xin
xin

総合スコア17

MySQL

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

PHP

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

Docker

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

2回答

0評価

0クリップ

5649閲覧

投稿2018/05/27 09:20

編集2022/01/12 10:55

お世話になっております。

今回、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

<構成>
イメージ説明

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も始めたばかりなのでどこかでミスしているのかもしれないのですが、見つけられず、、どなたかご教示いただければと思います。

追記:
.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は同じものを設定しました。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

xenbeat

2018/05/27 09:26

機密情報はmaskして、docker-composeとlaravelの.envを追記ください。
xin

2018/05/27 13:04

いつも有り難うございます!追記させて頂きましたm(_ _)m
xenbeat

2018/05/27 14:15 編集

うーん、ざっと見た感じ設定的には問題はなさそうですね。「migrationでエラーが出てしまいました。」→こちらどこでどのように実行したのか詳細を教えてください。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

MySQL

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

PHP

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

Docker

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