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

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

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

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

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

Docker

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

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

解決済

dockerでmysqlに接続出来ない

xin
xin

総合スコア0

MySQL

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

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

Docker

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

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

5回答

1評価

1クリップ

53閲覧

投稿2018/04/17 17:04

編集2022/01/12 10:58

いつもお世話になっております。
dockerでlaravel開発環境を作る練習をしているのですが、エラーが出てしまいググっても解決策を見つけられず、質問させて頂きます。
以下のqiita記事の通りに進めました。

https://qiita.com/RyosukeKamei/items/085b40e4e869e77b0756

開発環境:
mac os High Sierra 10.13.4
docker for mac
nginx + mysql +laravel

記事最後の

docker-compose exec workspace php artisan migrate

の手前まではうまくいったのですが、上記のコマンドを打つと

Illuminate\Database\QueryException : SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Name or service not known (SQL: select * from information_schema.tables where table_schema = default and table_name = migrations) at /var/www/vendor/laravel/framework/src/Illuminate/Database/Connection.php:664 660| // If an exception occurs when attempting to run a query, we'll format the error 661| // message to include the bindings with SQL, which will make this exception a 662| // lot more helpful to the developer instead of just the database's errors. 663| catch (Exception $e) { > 664| throw new QueryException( 665| $query, $this->prepareBindings($bindings), $e 666| ); 667| } 668| Exception trace: 1 PDOException::("PDO::__construct(): php_network_getaddresses: getaddrinfo failed: Name or service not known") /var/www/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:68 2 PDO::__construct("mysql:host=mysql;port=3306;dbname=default", "default", "secret", []) /var/www/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:68 Please use the argument -v to see more details.

とエラーが出てしまいました。
どなたかアドバイス頂けると有難いです。

<補足>
具体的なコマンドとエラー

laradockをダウンロード

mkdir my-laravel cd my-laravel/ git init git clone https://github.com/Laradock/laradock.git my-laradock cd my-laradock/ cp env-example .env vi .env

./mylaradock/.envを編集

### Paths ################################################# # Point to the path of your applications code on your host APP_CODE_PATH_HOST=../src/ //ここを編集 # Point to where the `APP_CODE_PATH_HOST` should be in the container. You may add flags to the path `:cached`, `:delegated`. When using Docker Sync add `:nocopy` APP_CODE_PATH_CONTAINER=/var/www:cached # Choose storage path on your machine. For all storage systems DATA_PATH_HOST=~/.laradock/data ### Drivers ################################################ : 省略 : : ### MYSQL ################################################# MYSQL_VERSION=8.0 //ここを編集 MYSQL_DATABASE=dev_db //ここを編集 MYSQL_USER=dev_user //ここを編集 MYSQL_PASSWORD=password //ここを編集 MYSQL_PORT=3306 MYSQL_ROOT_PASSWORD=root MYSQL_ENTRYPOINT_INITDB=./mysql/docker-entrypoint-initdb.d ### REDIS #################################################
docker-compose up -d nginx mysql docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ac4e31328b53 mylaradock_nginx "nginx" 4 minutes ago Up 5 minutes 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp mylaradock_nginx_1 1159ae63b755 mylaradock_php-fpm "docker-php-entrypoi…" 4 minutes ago Up 5 minutes 9000/tcp mylaradock_php-fpm_1 c2c27660a2d7 mylaradock_mysql "docker-entrypoint.s…" 4 minutes ago Up 5 minutes 0.0.0.0:3306->3306/tcp mylaradock_mysql_1

この時点でnginxの404ページが表示されました

workspaceがなかったので個別に起動

docker-compose up -d workspace docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 00072367f1c6 mylaradock_workspace "/sbin/my_init" 14 minutes ago Up 15 minutes 0.0.0.0:2222->22/tcp mylaradock_workspace_1 ac4e31328b53 mylaradock_nginx "nginx" 25 minutes ago Up 25 minutes 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp mylaradock_nginx_1 1159ae63b755 mylaradock_php-fpm "docker-php-entrypoi…" 25 minutes ago Up 25 minutes 9000/tcp mylaradock_php-fpm_1 c2c27660a2d7 myaradock_mysql "docker-entrypoint.s…" 25 minutes ago Up 25 minutes 0.0.0.0:3306->3306/tcp mylaradock_mysql_1

Laravelプロジェクトを作成

docker-compose exec workspace composer create-project --prefer-dist laravel/laravel ./ cd ./src vi .env

laravelのウェルカム画面が表示されました

MySQLの設定を反映
./src/.envを編集

DB_CONNECTION=mysql DB_HOST=mysql //ここを編集 DB_PORT=3306 DB_DATABASE=dev_db //ここを編集 DB_USERNAME=dev_user //ここを編集 DB_PASSWORD=password //ここを編集

./src/config/database.phpを編集

'mysql' => [ 'driver' => 'mysql', 'host' => env('DB_HOST', 'mysql'), //ここを編集 'port' => env('DB_PORT', '3306'), 'database' => env('DB_DATABASE', 'dev_db'), //ここを編集 'username' => env('DB_USERNAME', 'dev_user'), //ここを編集 'password' => env('DB_PASSWORD', 'password'), //ここを編集 'unix_socket' => env('DB_SOCKET', ''), 'charset' => 'utf8mb4', 'collation' => 'utf8mb4_unicode_ci', 'prefix' => '', 'strict' => true, 'engine' => null, ],

ここで

docker-compose exec workspace php artisan migrate

を実行すると冒頭のエラーが出ました。


------------ 4/26追記 ----------------------------------------------------

maverixzさんにアドバイス頂いた通り、mysqlバージョン8.0で作り直してみました。

前提としてdocker system pruneを実行、全てのコンテナを消してネットワークを初期化しました。
imageはpruneでは消えなかったので念のため全て消去しました。
laradockの.envの設定でmysqlデータがホストのルートに永続化されていたため、このフォルダも消去しました。↓

# Choose storage path on your machine. For all storage systems DATA_PATH_HOST=~/.laradock/data

1)laradock/.envを編集

### MYSQL ################################################# MYSQL_VERSION=8.0 //defaultから8.0に変更

2)docker-compose up -d nginx mysqlを実行
3)mysqlコンテナが一度はdoneになるがdocker psしても立ち上がっていない
4)以下がmysqlコンテナのlogです

018-04-26T13:18:04.820630700Z ERROR: mysqld failed while attempting to check config command was: "mysqld --verbose --help" 2018-04-26T13:18:04.820716500Z 2018-04-26T13:18:04.811937Z 0 [Warning] [MY-011070] [Server] 'Disabling symbolic links using --skip-symbolic-links (or equivalent) is the default. Consider not using this option as it' is deprecated and will be removed in a future release. 2018-04-26T13:18:04.812012Z 0 [ERROR] [MY-011071] [Server] /usr/sbin/mysqld: Error while setting value 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' to 'sql_mode' 2018-04-26T13:18:04.813618Z 0 [ERROR] [MY-010119] [Server] Aborting

4)再度docker環境を初期化、今度はlaradock/.envを以下のように編集

### MYSQL ################################################# MYSQL_VERSION=5.7.21 //defaultから5.7.21に変更

5)その後は同じ手順で実行するとmysqlコンテナはUPの状態になりました。

6)今回投稿した内容の通りにphp artisan migrateまで進み、無事マイグレーションできました。

mysqlのバージョンを8.0に変更した理由は、誰かとプロジェクトを共有する際にバージョンが変わるのを避けたかったので、数字で指定したかった
公式

Change the (MySQL) Version#

By default MySQL 8.0 is running.


再度maverixzさんのアドバイス通り、MYSQL_VERSION 8.0.3でトライ
→マイグレーションまで無事完了
----結論----

2018/4/26時点で
MYSQL_VERSION 8.0.3までは正常に動くが、8.0.4では動かない(8.0でプルすると8.0.4になるので同様)

良い質問の評価を上げる

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

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

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

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

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

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

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

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

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

xenbeat
xenbeat

2018/04/17 21:47

https://github\.com/laradock/laradockをそのまま(カスタマイズせず)使っているという認識で良いでしょうか?
xenbeat
xenbeat

2018/04/17 22:08

念のためcomposeとlaravelの\.envファイルの内容、docker psコマンドの結果を追記ください。
DaichiYasuda
DaichiYasuda

2018/04/18 02:00

docker-compose\.ymlファイルを見せてください
xin
xin

2018/04/18 03:07 編集

すみません、、docker-compose\.ymlの中身が多すぎて文字数を超えてしまいました、、 ここはデフォルトのままで編集していないです。 https://github\.com/laradock/laradockは参考サイトの記載のある\.envは修正しました。 具体的な作業やdocker psコマンドの結果も追記させて頂きました。 dockerが初めてで的を得ていないかもしれませんが、、わかりにくい箇所ありましたらご指摘ください。
xenbeat
xenbeat

2018/04/18 03:16

「//ここを編集」の部分は編集後ですか編集前ですか?

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

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

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

MySQL

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

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

Docker

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

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。