質問編集履歴

3 タイトルと質問内容の修正

zvub1123

zvub1123 score 173

2019/08/06 10:32  投稿

docker-compose から ecs-cli への移植について
ecs-cli compose up で package.json が読み込めない
# 実現したいこと
`docker-compose up`コマンドで正常に動作することが確認できているコンテナを、
ECSコンテナでも稼働するようにしたいですが、なにかとエラーが出て困っています。
# 問題
実行したコマンドは以下のような順序です。
```bash
# Docker build and push
docker build -t $IMAGE_NAME .
docker tag $IMAGE_NAME:latest $TAG_NAME:latest
docker push $TAG_NAME:latest
docker tag $IMAGE_NAME:latest $TAG_NAME:latest && docker push $TAG_NAME:latest
# ECS-CLI profile setting
ecs-cli configure profile --profile-name $PROFILE_NAME --access-key $ACCESS_KEY --secret-key $SECRET_KEY
# Cluster and Region setting
ecs-cli configure --cluster $CLUSTER_NAME --default-launch-type EC2 --region ap-northeast-1 --config-name $CONFIG_NAME
# Cluster Up
ecs-cli up --keypair $KEY_PAIR_NAME --instance-role $ROLE_NAME --instance-type m4.large
# deploy config file to cluster
ecs-cli compose up --create-log-groups --cluster $CLUSTER_NAME
```
上記の手順を実施した際、最後の `ecs-cli compose up` コマンドを実行した結果は以下の通りです。
```
WARN[0000] Skipping unsupported YAML option for service... option name=depends_on service name=web
INFO[0000] Using ECS task definition                    TaskDefinition="XXXXX:21"
WARN[0000] No log groups to create; no containers use 'awslogs'
INFO[0000] Starting container...                        container=6ff23c6b-8ff9-4c20-97fa-0a882f1ce3a1/mongo
INFO[0000] Starting container...                        container=6ff23c6b-8ff9-4c20-97fa-0a882f1ce3a1/web
INFO[0000] Describe ECS container status                container=6ff23c6b-8ff9-4c20-97fa-0a882f1ce3a1/web desiredStatus=RUNNING lastStatus=PENDING taskDefinition="XXXXX:21"
INFO[0000] Describe ECS container status                container=6ff23c6b-8ff9-4c20-97fa-0a882f1ce3a1/mongo desiredStatus=RUNNING lastStatus=PENDING taskDefinition="XXXXX:21"
INFO[0018] Stopped container...                         container=6ff23c6b-8ff9-4c20-97fa-0a882f1ce3a1/web desiredStatus=STOPPED lastStatus=STOPPED taskDefinition="XXXXX:21"
INFO[0018] Stopped container...                         container=6ff23c6b-8ff9-4c20-97fa-0a882f1ce3a1/mongo desiredStatus=STOPPED lastStatus=STOPPED taskDefinition="XXXXX:21"
```
記載の通り、コンテナがStopしてしまう状態となっております。
docker-compose.yml ファイル及び Dockerfile の記載内容は以下の通りです。
```yaml
# docker-compose.yml
version: '3'
services:
 web:
   # image: vue-express-mongo-site
   image: $TAG_NAME:latest
   # build: .
   command: npm run docker-dev
   ports:
     - "3000:3000"
   volumes:
     - .:/usr/src/app
     - /usr/src/app/node_modules
   links:
     - "mongo"
   logging:
     driver: "awslogs"
     options:
       awslogs-group: "/ecs/vue"
       awslogs-region: "ap-northeast-1"
       awslogs-stream-prefix: "macroscope-test"
 mongo:
   image: "mongo"
   logging:
     driver: awslogs
     options:
       awslogs-group: "/ecs/mongo"
       awslogs-region: "ap-northeast-1"
       awslogs-stream-prefix: "macroscope-test"
   ports:
     - "27017:27017"
```
```Dockerfile
FROM node:10.16.0-alpine
# Create app directory
WORKDIR /usr/src/app
# Install app dependencies
COPY package.json .
RUN npm install
# Bundle app source
COPY . .
EXPOSE 3000
```
イメージをpullするためにECR Repositoryも作成済みです。
イメージの元ネタは Icebob 氏の下記のリポジトリです。
[vue-express-mongo-boilerplate](https://github.com/icebob/vue-express-mongo-boilerplate)
問題解消のためにどこを参照すれば良いのかも定まらず、苦戦しています。
docker-compose を ecs へ移植するために足りない設定などがあるのでしょうか。
ご助力いただけると幸いです。
よろしくお願いします。
追記(2019/08/02)================================================================================
cloudwatch にログを出力することができたため詳細を確認すると、web コンテナのログが以下のようになっておりました。
上記の手順を実施した際、最後の `ecs-cli compose up` コマンドを実行した結果、以下のようなエラーがCloudWatchに出力されてしまいます。
```
npm ERR! path /usr/src/app/package.json
npm ERR! code ENOENT
npm ERR! errno -2
npm ERR! syscall open
npm ERR! enoent ENOENT: no such file or directory, open '/usr/src/app/package.json'
npm ERR! enoent This is related to npm not being able to find a file.
npm ERR! enoent
npm ERR! A complete log of this run can be found in:
npm ERR! /root/.npm/_logs/2019-08-01T04_54_49_065Z-debug.log
```
package.json が見当たらない、と言われているようなのですが、パーミッション関連の問題なのでしょうか。  
===============================================================================================
クラスタ内の mongo コンテナは正常に起動しているように見受けられるのですが、その後、webコンテナの起動中に何らかの原因で起動が失敗し、
タスクが停止してしまう状況です。
docker-compose.yml ファイル及び Dockerfile の記載内容は以下の通りです。
```yaml
# docker-compose.yml
version: '3'
services:
 web:
   image: $TAG_NAME:latest
   command: npm run docker-dev
   ports:
     - "3000:3000"
   working_dir: /home/app
   volumes:
     - .:/home/app
     - /home/app/node_modules
   logging:
     driver: "awslogs"
     options:
       awslogs-group: "/ecs/vue"
       awslogs-region: "ap-northeast-1"
       awslogs-stream-prefix: "macroscope-test"
   links:
     - "mongo"
 mongo:
   image: "mongo"
   ports:
     - "27017:27017"
   logging:
     driver: awslogs
     options:
       awslogs-group: "/ecs/mongo"
       awslogs-region: "ap-northeast-1"
       awslogs-stream-prefix: "macroscope-test"
```
```Dockerfile
FROM node:10.16.0
 
# Create app directory
ADD . /home/app
WORKDIR /home/app
# Install app dependencies
ADD package.json .
RUN node -v && npm -v
RUN cd /home/app && npm install
# Bundle app source
ADD . /home/app
EXPOSE 3000
```
イメージをpullするためにECR Repositoryも作成済みです。
問題解消のためにどこを参照すれば良いのかも定まらず、苦戦しています。
docker-compose を ecs へ移植するために足りない設定などがあるのでしょうか。
ご助力いただけると幸いです。
よろしくお願いします。
  • MongoDB

    340 questions

    MongoDBはオープンソースのドキュメント指向データベースの1つです。高性能で、多くのリトルエンディアンシステムを利用することができます。

  • docker-compose

    565 questions

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

  • Express

    445 questions

    ExpressはNode.jsのWebアプリケーションフレームワークです。 マルチページを構築するための機能セットおよびハイブリッドのWebアプリケーションを提供します。

  • Node.js

    3300 questions

    Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

  • Docker

    1943 questions

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

  • npm

    624 questions

    npmは、Node Packaged Modulesの略。Node.jsのライブラリ・パッケージを管理できるツールです。様々なモジュールを簡単にインストールでき、自分でモジュールを作成し公開する際にも使用できます。

2 タグの編集

zvub1123

zvub1123 score 173

2019/08/02 17:45  投稿

docker-compose から ecs-cli への移植について
# 実現したいこと
`docker-compose up`コマンドで正常に動作することが確認できているコンテナを、
ECSコンテナでも稼働するようにしたいですが、なにかとエラーが出て困っています。
# 問題
実行したコマンドは以下のような順序です。
```bash
# Docker build and push
docker build -t $IMAGE_NAME .
docker tag $IMAGE_NAME:latest $TAG_NAME:latest
docker push $TAG_NAME:latest
# ECS-CLI profile setting
ecs-cli configure profile --profile-name $PROFILE_NAME --access-key $ACCESS_KEY --secret-key $SECRET_KEY
# Cluster and Region setting
ecs-cli configure --cluster $CLUSTER_NAME --default-launch-type EC2 --region ap-northeast-1 --config-name $CONFIG_NAME
# Cluster Up
ecs-cli up --keypair $KEY_PAIR_NAME --instance-role $ROLE_NAME --instance-type m4.large
# deploy config file to cluster
ecs-cli compose up --create-log-groups --cluster $CLUSTER_NAME
```
上記の手順を実施した際、最後の `ecs-cli compose up` コマンドを実行した結果は以下の通りです。
```
WARN[0000] Skipping unsupported YAML option for service... option name=depends_on service name=web
INFO[0000] Using ECS task definition TaskDefinition="XXXXX:21"
WARN[0000] No log groups to create; no containers use 'awslogs'
INFO[0000] Starting container... container=6ff23c6b-8ff9-4c20-97fa-0a882f1ce3a1/mongo
INFO[0000] Starting container... container=6ff23c6b-8ff9-4c20-97fa-0a882f1ce3a1/web
INFO[0000] Describe ECS container status container=6ff23c6b-8ff9-4c20-97fa-0a882f1ce3a1/web desiredStatus=RUNNING lastStatus=PENDING taskDefinition="XXXXX:21"
INFO[0000] Describe ECS container status container=6ff23c6b-8ff9-4c20-97fa-0a882f1ce3a1/mongo desiredStatus=RUNNING lastStatus=PENDING taskDefinition="XXXXX:21"
INFO[0018] Stopped container... container=6ff23c6b-8ff9-4c20-97fa-0a882f1ce3a1/web desiredStatus=STOPPED lastStatus=STOPPED taskDefinition="XXXXX:21"
INFO[0018] Stopped container... container=6ff23c6b-8ff9-4c20-97fa-0a882f1ce3a1/mongo desiredStatus=STOPPED lastStatus=STOPPED taskDefinition="XXXXX:21"
```
記載の通り、コンテナがStopしてしまう状態となっております。
docker-compose.yml ファイル及び Dockerfile の記載内容は以下の通りです。
```yaml
# docker-compose.yml
version: '3'
services:
web:
# image: vue-express-mongo-site
image: $TAG_NAME:latest
# build: .
command: npm run docker-dev
ports:
- "3000:3000"
volumes:
- .:/usr/src/app
- /usr/src/app/node_modules
links:
- "mongo"
logging:
driver: "awslogs"
options:
awslogs-group: "/ecs/vue"
awslogs-region: "ap-northeast-1"
awslogs-stream-prefix: "macroscope-test"
mongo:
image: "mongo"
logging:
driver: awslogs
options:
awslogs-group: "/ecs/mongo"
awslogs-region: "ap-northeast-1"
awslogs-stream-prefix: "macroscope-test"
ports:
- "27017:27017"
```
```Dockerfile
FROM node:10.16.0-alpine
# Create app directory
WORKDIR /usr/src/app
# Install app dependencies
COPY package.json .
RUN npm install
# Bundle app source
COPY . .
EXPOSE 3000
```
イメージをpullするためにECR Repositoryも作成済みです。
イメージの元ネタは Icebob 氏の下記のリポジトリです。
[vue-express-mongo-boilerplate](https://github.com/icebob/vue-express-mongo-boilerplate)
問題解消のためにどこを参照すれば良いのかも定まらず、苦戦しています。
docker-compose を ecs へ移植するために足りない設定などがあるのでしょうか。
ご助力いただけると幸いです。
よろしくお願いします。
追記(2019/08/02)================================================================================
cloudwatch にログを出力することができたため詳細を確認すると、web コンテナのログが以下のようになっておりました。
```
npm ERR! path /usr/src/app/package.json
npm ERR! code ENOENT
npm ERR! errno -2
npm ERR! syscall open
npm ERR! enoent ENOENT: no such file or directory, open '/usr/src/app/package.json'
npm ERR! enoent This is related to npm not being able to find a file.
npm ERR! enoent
npm ERR! A complete log of this run can be found in:
npm ERR! /root/.npm/_logs/2019-08-01T04_54_49_065Z-debug.log
```
package.json が見当たらない、と言われているようなのですが、パーミッション関連の問題なのでしょうか。
===============================================================================================
  • MongoDB

    340 questions

    MongoDBはオープンソースのドキュメント指向データベースの1つです。高性能で、多くのリトルエンディアンシステムを利用することができます。

  • Node.js

    3300 questions

    Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

  • Express

    445 questions

    ExpressはNode.jsのWebアプリケーションフレームワークです。 マルチページを構築するための機能セットおよびハイブリッドのWebアプリケーションを提供します。

  • docker-compose

    565 questions

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

  • npm

    624 questions

    npmは、Node Packaged Modulesの略。Node.jsのライブラリ・パッケージを管理できるツールです。様々なモジュールを簡単にインストールでき、自分でモジュールを作成し公開する際にも使用できます。

1 CloudWatchのログを追記

zvub1123

zvub1123 score 173

2019/08/02 11:19  投稿

docker-compose から ecs-cli への移植について
# 実現したいこと
`docker-compose up`コマンドで正常に動作することが確認できているコンテナを、
ECSコンテナでも稼働するようにしたいですが、なにかとエラーが出て困っています。
# 問題
実行したコマンドは以下のような順序です。
```bash
# Docker build
# Docker build and push
docker build -t $IMAGE_NAME .
# tagging  
docker tag $IMAGE_NAME:latest $TAG_NAME:latest
docker push $TAG_NAME:latest  
# ECS-CLI profile setting
ecs-cli configure profile --profile-name $PROFILE_NAME --access-key $ACCESS_KEY --secret-key $SECRET_KEY
 
# Cluster and Region setting
ecs-cli configure --cluster $CLUSTER_NAME --default-launch-type EC2 --region ap-northeast-1 --config-name $CONFIG_NAME
 
# Cluster Up
ecs-cli up --keypair $KEY_PAIR_NAME --instance-role $ROLE_NAME --instance-type m4.large
# deploy config file to cluster
ecs-cli compose up --create-log-groups --cluster $CLUSTER_NAME
```
上記の手順を実施した際、最後の `ecs-cli compose up` コマンドを実行した結果は以下の通りです。
```
WARN[0000] Skipping unsupported YAML option for service... option name=depends_on service name=web
INFO[0000] Using ECS task definition                    TaskDefinition="XXXXX:21"
WARN[0000] No log groups to create; no containers use 'awslogs'
INFO[0000] Starting container...                        container=6ff23c6b-8ff9-4c20-97fa-0a882f1ce3a1/mongo
INFO[0000] Starting container...                        container=6ff23c6b-8ff9-4c20-97fa-0a882f1ce3a1/web
INFO[0000] Describe ECS container status                container=6ff23c6b-8ff9-4c20-97fa-0a882f1ce3a1/web desiredStatus=RUNNING lastStatus=PENDING taskDefinition="XXXXX:21"
INFO[0000] Describe ECS container status                container=6ff23c6b-8ff9-4c20-97fa-0a882f1ce3a1/mongo desiredStatus=RUNNING lastStatus=PENDING taskDefinition="XXXXX:21"
INFO[0012] Describe ECS container status                container=6ff23c6b-8ff9-4c20-97fa-0a882f1ce3a1/web desiredStatus=RUNNING lastStatus=PENDING taskDefinition="XXXXX:21"  
INFO[0012] Describe ECS container status                container=6ff23c6b-8ff9-4c20-97fa-0a882f1ce3a1/mongo desiredStatus=RUNNING lastStatus=PENDING taskDefinition="XXXXX:21"  
INFO[0018] Stopped container...                         container=6ff23c6b-8ff9-4c20-97fa-0a882f1ce3a1/web desiredStatus=STOPPED lastStatus=STOPPED taskDefinition="XXXXX:21"
INFO[0018] Stopped container...                         container=6ff23c6b-8ff9-4c20-97fa-0a882f1ce3a1/mongo desiredStatus=STOPPED lastStatus=STOPPED taskDefinition="XXXXX:21"
```
記載の通り、コンテナがStopしてしまう状態となっております。
docker-compose.yml ファイル及び Dockerfile の記載内容は以下の通りです。
```yaml
# docker-compose.yml
version: '3'
services:
 web:
   # image: vue-express-mongo-site
   image: $ACCOUNT_ID.dkr.ecr.ap-northeast-1.amazonaws.com/$IMAGE_NAME
   image: $TAG_NAME:latest
   # build: .
   command: npm run docker-dev
   ports:
     - "3000:3000"
   volumes:
     - .:/usr/src/app
     - /usr/src/app/node_modules
   depends_on:
   links:
     - "mongo"
   logging:  
     driver: "awslogs"  
     options:  
       awslogs-group: "/ecs/vue"  
       awslogs-region: "ap-northeast-1"  
       awslogs-stream-prefix: "macroscope-test"  
 mongo:
   image: "mongo"
   logging:
     driver: awslogs
     options:
       awslogs-group: "/ecs/mongo"
       awslogs-region: "ap-northeast-1"
       awslogs-stream-prefix: "macroscope-test"
   ports:
     - "27017:27017"
```
```Dockerfile
FROM node:10.16.0-alpine
# Create app directory
WORKDIR /usr/src/app
# Install app dependencies
COPY package.json .
RUN npm install
# Bundle app source
COPY . .
EXPOSE 3000
```
イメージをpullするためにECR Repositoryも作成済みです。
イメージの元ネタは Icebob 氏の下記のリポジトリです。
[vue-express-mongo-boilerplate](https://github.com/icebob/vue-express-mongo-boilerplate)
問題解消のためにどこを参照すれば良いのかも定まらず、苦戦しています。
docker-compose を ecs へ移植するために足りない設定などがあるのでしょうか。
ご助力いただけると幸いです。
よろしくお願いします。
よろしくお願いします。
追記(2019/08/02)================================================================================
cloudwatch にログを出力することができたため詳細を確認すると、web コンテナのログが以下のようになっておりました。
```
npm ERR! path /usr/src/app/package.json
npm ERR! code ENOENT
npm ERR! errno -2
npm ERR! syscall open
npm ERR! enoent ENOENT: no such file or directory, open '/usr/src/app/package.json'
npm ERR! enoent This is related to npm not being able to find a file.
npm ERR! enoent
npm ERR! A complete log of this run can be found in:
npm ERR! /root/.npm/_logs/2019-08-01T04_54_49_065Z-debug.log
```
package.json が見当たらない、と言われているようなのですが、パーミッション関連の問題なのでしょうか。
===============================================================================================
  • MongoDB

    340 questions

    MongoDBはオープンソースのドキュメント指向データベースの1つです。高性能で、多くのリトルエンディアンシステムを利用することができます。

  • Node.js

    3300 questions

    Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

  • Express

    445 questions

    ExpressはNode.jsのWebアプリケーションフレームワークです。 マルチページを構築するための機能セットおよびハイブリッドのWebアプリケーションを提供します。

  • npm

    624 questions

    npmは、Node Packaged Modulesの略。Node.jsのライブラリ・パッケージを管理できるツールです。様々なモジュールを簡単にインストールでき、自分でモジュールを作成し公開する際にも使用できます。

  • docker-compose

    565 questions

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

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る