いつもお世話になっております。
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になるので同様)
細かい原因糾明まで助けてくださったmaverixzさんをベストアンサーにさせていただきました。

回答5件
あなたの回答
tips
プレビュー