前提・実現したいこと
AWSのECSでDocker環境を構築しています。
PHP(Laravel)用のコンテナ…docker-compose.yml内のファイル名はweb
mySQL用のコンテナ…docker-compose.yml内のファイル名はdb
を用意しています。
dbへの接続エラーを解消したいです。
DB_HOSTの名前解決が問題と認識しています。
ローカル環境では以下の情報でwebからdbへアクセスできます。
DB_CONNECTION=mysql DB_HOST=db DB_PORT=3306 DB_DATABASE=database_name DB_USERNAME=user_name DB_PASSWORD=user_password
発生している問題・エラーメッセージ
しかし、ECSで作成したEC2内でアクセスすると下記のエラーが発生します。
Illuminate\Database\QueryException : SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Name or service not known (SQL: select max(`batch`) as aggregate from `migrations`)
仮定
データベース名、ユーザー名、パスワードは直接mySQLヘアクセスしに行くと問題なく接続できるので、.envファイルに設定しているDB_HOSTが誤っているのではないか。
試したこと
$docker network ls
でネットワーク情報を確認すると接続したいコンテナ情報は
"c5ce80*********************************": { "Name": "ecs-stg*********************00", "EndpointID": "9***************************************36399a85cd598", "MacAddress": "02:**:**:**:**:*2", "IPv4Address": "1**.**.*.*/**", "IPv6Address": "" }
となっていたので、IPアドレスを指定してアクセスしてみました。
DB_CONNECTION=mysql DB_HOST=1**.**.*.* DB_PORT=3306 DB_DATABASE=database_name DB_USERNAME=user_name DB_PASSWORD=user_password
すると接続することはできました。
しかし、コンテナを再起動するなどしてしまうと、IPアドレスの情報が変わってしまうので、都度.envファイルを設定しに行くことが問題なので、そこを解消したい。
「db」を指定してアクセスするためにはdocker-composeが処理していると認識しているが
ローカルからdocker imageをECRへpush
それを用いてECSで処理、EC2に構築しているので、EC2内にdocker-copose.ymlファイルが存在しないので、EC2内でdocker-composeをインストールしてもエラーが解消できない。
よろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。