AWS Fargateで小さな例をセットアップし、1つのアプリケーションコンテナーと1つのデータベースコンテナーをそこに配置しようとします。
タスク定義は両方のコンテナーを開始しますが、アプリコンテナーはgetaddrinfo ENOTFOUND db db:3306
で失敗します。したがって、データベースコンテナーがアプリコンテナーで見つかりませんでした。
FargateはDockerコンテナの「リンク」を許可していないため、それらが相互に通信する方法を知りたいと思います。データベースコンテナーの名前はdb
で、ポートは3306
で、アプリコンテナーはこれを使用するように構成されています。
残念ながら、コンテナのリンクの定義はFargateでは使用できませんが、「oldschool」ECS/EC2でのみ使用できます。
ローカルのdocker-composeセットアップでは、この方法で動作しています。
Fargateタスクのコンテナはネットワーク名前空間を共有するため、リンクをまったく使用する必要はありません。単にローカルホスト経由で通信できます。
たとえば、ポート8000でWebサーバーを実行しているコンテナAがある場合、コンテナBはcurl http://localhost:8000/