0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ECS handson

Posted at

ECSハンズオン(AWS公式)
https://catalog.workshops.aws/ecs-web-application-handson/ja-JP/docker/image

ハンズオンでの構成図

スクリーンショット 2025-10-07 20.20.09.png

1. VS Code Server

ハンズオンページの「Launch Stack」ボタンをクリックし、開いたCloudFormationの画面上で「スタックの作成」ボタンを押せば完了!

スクリーンショット 2025-10-07 20.24.16.png

2. Docker構築

用語整理

  • Docekrとは
    • アプリケーションを、その実行環境ごと「コンテナ」に箱詰めする技術
    • Docker Image
      • コンテナのテンプレート
    • Dockerfile
      • コンテナイメージの作成手順をコードとして記述したファイル
    • Dockerfile (設計図) → docker build (ビルド実行) → Docker Image (完成品) → docker run (実行) → Dockerコンテナ (稼働中の実体)
  • Gemfile
    • Rubyのプロジェクトで利用するライブラリ(Gem)の種類とバージョンを管理するための設定ファイル

下記のコードをDockerfileに貼り付ける

# ruby:3.2.1 というベースイメージを取得する
FROM public.ecr.aws/docker/library/ruby:3.2.1

# 必要なパッケージ群を取得する
RUN apt-get update -qq && \
    apt-get install -y nodejs postgresql-client npm && \
    rm -rf /var/lib/apt/lists/\*

# ローカルにあるファイルをコンテナイメージ内にコピーする
WORKDIR /myapp
COPY Gemfile /myapp/Gemfile

# Rails アプリケーションを作成する
RUN bundle install && \
    rails new . -O && \
    sed -i -e "52a\  config.hosts.clear\n  config.web_console.allowed_ips = '0.0.0.0/0'\n  config.action_dispatch.default_headers.delete('X-Frame-Options')" config/environments/development.rb

# Rails を 3000 番ポートで起動する
EXPOSE 3000
CMD ["rails", "server", "-b", "0.0.0.0", "-p", "3000"]

次に、Gemfileを作成します。

source 'https://rubygems.org'
gem 'rails', '7.2.2'

Dockerfileをビルドして、Docker Imageを取得して、コンテナ実行

cd /workshop
docker build -t rails-app .
docker run -d -p 8081:3000 rails-app:latest
ホスト (VS Code Server インスタンス) の 8081 番ポートを、
コンテナの 3000 番ポートにマッピングしています。
コンテナの 3000 番ポートでアプリケーションを実行するように Dockerfile を記述したので、
ホストの 8081 番ポートにアクセスすることで Rails アプリケーションにアクセスできます。

ECS構築

用語整理

  • ECS
    • クラスター(オフィス)
      • Dockerコンテナを配置し、EC2やFargateを立ち上げることができる
    • タスク定義(求人票)
      • 下記の設定内容を決める
        • DockerImage、CPU、メモリ、ネットワーク、環境変数 etc...
    • タスク(従業員)
      • クラスター内で、タスク定義に基づいて起動されたコンテナのインスタンスのこと
  • VPC(Virtual Privete Cloud)
    • 仮想ネットワーク空間のことで、IPアドレスを指定して空間を決める
  • サブネット
    • VPCをのIPアドレス範囲を、さらに分割した小さいネットワークの単位
    • パブリックサブネット
      • インターネットから直接アクセスできる
    • インターネットゲートウェイ
      • VPCとインターネットを繋ぐサービス
    • プライベートサブネット
      • インターネットから直接アクセスできない(NATゲートウェイという仕組みを使えば可能)

VPCとサブネットの作成

  • 今回はプライベートサブネットは作成しない
    スクリーンショット 2025-10-07 20.57.47.png

クラスターの作成

  • 手順に従ってクラスターを作成
  • ECS作成時の「コンピューティングキャパシティの取得方法を選択」では「Fargate インスタンスとセルフマネージドインスタンス」を選択し、手順通り作成
    スクリーンショット 2025-10-12 20.06.50.png

コンテナイメージの保存

  • プライベートリポジトリを作成し、先ほど作成したコンテナイメージをリポジトリにプッシュ
  • コマンドはガイドラインがある
    スクリーンショット 2025-10-12 20.10.24.png
    スクリーンショット 2025-10-12 20.11.53.png

タスク定義の作成

スクリーンショット 2025-10-12 20.13.59.png

スクリーンショット 2025-10-12 20.15.43.png

EC2 へのデプロイ

スクリーンショット 2025-10-12 20.17.06.png
スクリーンショット 2025-10-12 21.10.11.png

全体の流れ

  • クラスターを作成(EC2/Fargateの実行環境)
  • タスク定義を登録(コンテナの設計図)
  • サービスを作成
    • クラスターに属する形で、
    • タスク定義を参照して、
    • 必要な数のタスクを常時維持
  • サービスがタスクを起動
    • タスク定義の内容が「反映」されてコンテナが実行される
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?