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

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

新規登録して質問してみよう
ただいま回答率
85.46%
docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

Docker

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

Q&A

解決済

1回答

909閲覧

ローカルのアプリ(Laravel)でDBはDockerのmysqlを使用したい

kobayashi103

総合スコア3

docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

Docker

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

0グッド

0クリップ

投稿2021/05/14 06:15

php artisan migrateでエラー

ローカルのアプリ(Laravel)でDBはローカルのmysqlではなくDockerのmysqlを使用したいのですがエラーが出てしまい解決できませんご教示いただけますでしょうか。
docker内に入りmysqlへのアクセスはできましたが、ローカルアプリとDockerDBの繋げ方がよくわかりません。

php artisan migrateをすると下記のエラーメッセージが表示されます。

発生している問題・エラーメッセージ

SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: nodename nor servname provided, or not known (SQL: select * from information_schema.tables where table_schema = mydatabase and table_name = migrations and table_type = 'BASE TABLE')

該当のソースコード

docker-compose.yml

version: "3" services: mysql: # imageの指定 image: "mysql" # 環境変数の設定 # container_name: my_db environment: - MYSQL_DATABASE=mydatabase - MYSQL_USER=myuser - MYSQL_PASSWORD=mypassword - MYSQL_ROOT_PASSWORD=mypassword ports: - "3306:3306"

env

env

1DB_CONNECTION=mysql 2# DB_HOST=127.0.0.1 3DB_HOST=mysql 4DB_PORT=3306 5DB_DATABASE=mydatabase 6DB_USERNAME=myuser 7DB_PASSWORD=mypassword

試したこと

DB_HOSTをdocker-compose.ymlのmysqlに変更しました。
調べたところ設定関連のエラー記事が出てくるのですが、似た様な記事を見つけることができませんでした。

補足情報(FW/ツールのバージョンなど)

dockerもlaravelも初学者のため知識が足りない部分も多いですが、教えていただければ幸いです。
docker mysql latest

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

php artisan migrate はDockerコンテナ上ではなく、ホストOS上のphpコマンドで実行されているわけですよね?

その場合は、 3306 ポートを公開しているので、ホスト名は 127.0.0.1 になります。

DB_HOST=127.0.0.1

ホストOS上にmysqlサービスが存在していて、ポート番号がバッティングしてしまってる場合は、コンテナの公開ポートを変更する必要があります。

yml

1 ports: 2 - "13306:3306"
DB_HOST=127.0.0.1 DB_PORT=13306

投稿2021/05/14 07:08

ucan-lab

総合スコア888

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kobayashi103

2021/05/14 09:20

ご回答ありがとうございます!いつもqiitaの記事みさせてもらってます! ポート、ホスト周りの理解が足りなかったです。今回の質問で勉強になりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問