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

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

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

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

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

MySQL

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

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

受付中

AWS ECSにてRaila apiとDBのインスタンスが起動できない

SeijiFukuda
SeijiFukuda

総合スコア0

docker-compose

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

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

MySQL

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

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0回答

0評価

0クリップ

4閲覧

投稿2021/05/06 06:16

編集2022/01/12 10:55

現在、Rails Api/MySQLを使用してサービスを開発しており、AWS ECSにてデプロイを行おうとしているのですが、下記コマンドを実行後EC2にてコンテナが動き出した後、すぐに停止してしまいます。

ローカルではdockerを使い問題なく開発できているので、AWSに関わる設定が上手くdockerが使える設定が出来ていないのだと思うのですが、どなたかアドバイスを頂けませんでしょうか。

行った手順と結果はこちらになります。

#手順

###①アクセスキーを設定

export AWS_ACCESS_KEY_ID= <アクセスキー> export AWS_SECRET_ACCESS_KEY=<シークレットキー> export AWS_DEFAULT_REGION=ap-northeast-1

###②Amazon ECSCLIを設定する
######クラスターの構成

ecs-cli configure --cluster <クラスター名> --default-launch-type EC2 --config-name <クラスターコンフィグ名> --region ap-northeast-1

######アクセスキーと秘密キーを使用してプロファイルを作成

ecs-cli configure profile --access-key <アクセスキー> --secret-key <シークレットキー> --profile-name <プロファイル名>

###③:クラスターを作成する

ecs-cli up --keypair <キーペア名> --capability-iam --size 2 --instance-type t2.micro --cluster-config <クラスターコンフィグ名> --ecs-profile <プロファイル名>

###④:docker-compose.ymlの作成

version: "3" services: db: image: DBイメージ名 container_name: database image: mysql:5.7 command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci env_file: - .env environment: TZ: Asia/Tokyo ports: - 3306:3306 volumes: - ./database/my.cnf:/etc/mysql/conf.d/my.cnf - ./database/data:/var/lib/mysql - ./database/sql:/docker-entrypoint-initdb.d logging: driver: awslogs options: awslogs-group: al-group awslogs-region: ap-northeast-1 awslogs-stream-prefix: web api: image: Rails api イメージ名 container_name: back build: . command: /bin/sh -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'" volumes: - .:/api ports: - "3000:3000" links: - db logging: driver: awslogs options: awslogs-group: al-group awslogs-region: ap-northeast-1 awslogs-stream-prefix: web

###⑤docker version3を使うのでesc-params.ymlを作成

esc

version: 1 task_definition: services: db: cpu_shares: 100 mem_limit: 224288000 api: cpu_shares: 100 mem_limit: 224288000

###⑥CodeDeployを使用するためappspec.ymlの作成

appspec.yml

version: 0.0 os: linux files: - source: . destination: /var/www/api/

###⑦:ECSでdockerの読み込み(デプロイ)

ecs-cli compose up --create-log-groups --cluster-config <クラスターコンフィグ名> --ecs-profile <プロファイル名>

#結果

Mac$ ecs-cli compose up --create-log-groups --cluster-config <クラスターコンフィグ名> --ecs-profile <プロファイル名> WARN[0000] Skipping unsupported YAML option for service... option name=container_name service name=db WARN[0000] Skipping unsupported YAML option for service... option name=build service name=api WARN[0000] Skipping unsupported YAML option for service... option name=container_name service name=api INFO[0000] Using ECS task definition TaskDefinition="api:27" WARN[0000] Failed to create log group group in ap-northeast-1: The specified log group already exists WARN[0000] Failed to create log group group in ap-northeast-1: The specified log group already exists INFO[0000] Auto-enabling ECS Managed Tags INFO[0001] Starting container... container=cluster/222ae0987f6f4e8d94aaf5a0088355b5/api INFO[0001] Starting container... container=cluster/222ae0987f6f4e8d94aaf5a0088355b5/db INFO[0001] Describe ECS container status container=cluster/222ae0987f6f4e8d94aaf5a0088355b5/api desiredStatus=RUNNING lastStatus=PENDING taskDefinition="api:27" INFO[0001] Describe ECS container status container=cluster/222ae0987f6f4e8d94aaf5a0088355b5/db desiredStatus=RUNNING lastStatus=PENDING taskDefinition="api:27" INFO[0013] Describe ECS container status container=cluster/222ae0987f6f4e8d94aaf5a0088355b5/api desiredStatus=RUNNING lastStatus=PENDING taskDefinition="api:27" INFO[0013] Describe ECS container status container=cluster/222ae0987f6f4e8d94aaf5a0088355b5/db desiredStatus=RUNNING lastStatus=PENDING taskDefinition="api:27" ~10秒後 INFO[0019] Stopped container... container=cluster/222ae0987f6f4e8d94aaf5a0088355b5/api desiredStatus=STOPPED lastStatus=STOPPED taskDefinition="api:27" INFO[0019] Stopped container... container=cluster/222ae0987f6f4e8d94aaf5a0088355b5/db desiredStatus=STOPPED lastStatus=STOPPED taskDefinition="api:27"

イメージ説明

上記の画像の通り、AWSのクラスター内でタスクを確認したところ

状況の理由
CannotStartContainerError: Error response from daemon: driver failed programming external connectivity on endpoint ecs-XXXXXX_api-27-db-c0cbbface1aacdfc1f00 (b5ca89a2c3ad7e261ec2b2ecb278ffce333f5adb3ff5c0265b0d49b8673fd3ac): Error starting userland prox

とのエラーが出ておりましたが、調べても解決する方法がわかりませんでした。
どなたかAWSに詳しい方、何かアドバイスを頂けませんでしょうか。
また何か不足している情報がありましたら、ご指摘をお願い致します。
どうぞ、よろしくお願い致します。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

yu_1985
yu_1985

2021/05/06 08:35

該当のEC2で既にポートが使われていたりしないか調べてみてください。 また、関係ないですがAWS上で動かすならアクセスキーを使わずにIAMロールを使いましょう。

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

docker-compose

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

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

MySQL

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

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。