ECRにプッシュしたDockerのコンテナをECSでタスク定義を行い、いざタスクの実行を行うとステータスがSTOPPED
となる。
何十回やっても以下のようなエラーが起きる。
Cannot link to a non running container
ちなみにコンテナの設定は以下のようになっている。
version: "3.8"
services:
app:
build:
context: .
dockerfile: ./docker/php/Dockerfile
args:
- TZ=${TZ:-Asia/Tokyo}
ports:
- ${APP_PORT:-8000}:8000
volumes:
- ./backend:/work
- ./logs:/var/log/php
- ./docker/php/php.ini:/usr/local/etc/php/php.ini
working_dir: /work
environment:
- DB_CONNECTION=mysql
- DB_HOST=db
- DB_DATABASE=${DB_NAME:-***}
- DB_USERNAME=${DB_USER:-***}
- DB_PASSWORD=${DB_PASS:-***}
- TZ=${TZ:-Asia/Tokyo}
web:
build:
context: .
dockerfile: ./docker/nginx/Dockerfile
depends_on:
- app
ports:
- ${WEB_PORT:-80}:80
volumes:
- ./backend:/work
- ./logs:/var/log/nginx
- ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf
environment:
- TZ=${TZ:-Asia/Tokyo}
db:
image: mysql:8.0
volumes:
- db-store:/var/lib/mysql
- ./logs:/var/log/mysql
- ./docker/mysql/my.cnf:/etc/mysql/conf.d/my.cnf
environment:
- MYSQL_DATABASE=${DB_NAME:-***}
- MYSQL_USER=${DB_USER:-***}
- MYSQL_PASSWORD=${DB_PASS:-***}
- MYSQL_ROOT_PASSWORD=${DB_PASS:-***}
- TZ=${TZ:-Asia/Tokyo}
ports:
- ${DB_PORT:-13306}:3306
volumes:
db-store:
├─backend
│ ├─laravel
├─docker
│ ├─mysql
│ ├─nginx
│ └─php
│─docker-compose.yml
app
コンテナとweb
コンテナを接続するという内容です。
backend\laravel
にはLaravelのプロジェクトが入っています。
タスク定義の設定を変更したり、クラスターの設定をいくら変更してもこのエラーが吐かれる!!!
こうゆうエラーが一番厄介。。。
ただ、およそ2日間かけてこのエラーの解消法が分かった。
原因は「タスク定義」の際に行う「コンテナの追加」。
appコンテナを追加するするときに「環境」で以下のコマンドを追加する。
chmod 777 -R && php-fpm
たった一行のコマンドのせいで2日間時間を費やした。。。
くれぐれも皆さん気を付けください!!
以上、「ECSのタスク定義で、コンテナ間接続のエラーが起きた時の対処法」でした!
良ければ、LGTM、コメントお願いします。
また、何か間違っていることがあればご指摘頂けると幸いです。
他にも初心者さん向けに記事を投稿しているので、時間があれば他の記事も見て下さい!!
Thank you for reading