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

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

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

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

MySQL

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

Docker

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

Q&A

解決済

1回答

3318閲覧

AWSのECSで構築したコンテナで、データベースのコンテナに接続したい

退会済みユーザー

退会済みユーザー

総合スコア0

docker-compose

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

MySQL

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

Docker

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

0グッド

1クリップ

投稿2021/04/09 04:04

前提・実現したいこと

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をインストールしてもエラーが解消できない。

よろしくお願い致します。

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

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

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

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

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

guest

回答1

0

ベストアンサー

ECSのタスク定義内でリンクの設定でdbとのリンクを設定
DB_HOST=db
と設定することで解決しました。

投稿2021/04/09 07:29

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問