前回は、AWS Fargate for Amazon ECS を使ってコンテナを作成するにあたって、クラスターを作成するところまでいきました。

今回は、前回の続きからスタートします。

AWS コンソールの検索画面で、Elastic Container Service を選択します。

左メニューの『レポジトリ』をクリックします。

image2

『レポジトリを作成』をクリックします。

image3

歌詞性設定は、プライベートを選択します。

レポジトリ名を入力します。

image4

画面下部の『レポジトリを作成』をクリックします。

image5

レポジトリの作成が完了しました。

『プッシュコマンドの表示』をクリックします。

image6

CLI の内容が 4 箇所あるので、全てコピーして、テキストエディタに保存します。

プッシュコマンドの表示を閉じます。

次に Cloud9 のサービスに移動します。

image7

『Create environment』をクリックします。

image8

Name を入力します。

『Next step』をクリックします。

image9

Instance type で、『t3.small』を選択します。

image10

Network settings で、先程設定した VPC と Subnet を選択します。

image11

『Next step』をクリックします。

image12

『Create environment』をクリックします。

image13

Cloud9 が立ち上がりました。

image14

『File』をクリックし、『New File』を選択します。

image15

『File』をクリックし、『save』をクリックしてからのままファイルを保存します。

Filename を入力し、『Save』をクリックします。

image16

ファイルの中に、以下の PHP を入力します。

FROM php:7.0-apache
COPY src/ /var/www/html/

1 行目は、Docker ハブから apache イメージの Docker イメージを取得します。

2 行目は、ローカルのソースディレクトリをコンテナ内部の下に配置します。

ファイルを保存します。

src フォルダを作成します。

image17

src フォルダの中に、index.php を作成します。

image18

index.php の中に、以下のコードを入力します。

<html>
    <head>
        <title>PHP sample</title>
    </head>
    <body>
        <?php echo gethostname(); ?>
    </body>
</html>

これは、Fargate が動いているホストを出力します。

画面下部の bash に、先程テキストエディタで保存したコードを実行します。

image19

Docker イメージが出来上がりました。

試しに起動してみます。

bash で、以下のコードを実行します。

※〇〇は、先程実行したコードです。

docker run --rm -p 8080:80 -d 〇〇:latest

image20

実際に起動しているか、確認します。

上画面のタブの Preview をクリックし、『Preview Running Application』を選択します。

image21

右下に、ブラウザが立ち上がりました。

image22

起動している Docker を止めるために、bash でdocker stop 〇〇 を実行します。

〇〇は、先程ブラウザで出力された内容を入力します。

image23

ECR にイメージをプッシュします。

画面下部の bash に、先程テキストエディタで保存したコードを実行します。

image24

Login Succeeded が表示されました。

次にタグを付けます。

さらに、先程テキストエディタで保存したコードを実行します。

image25

先程テキストエディタで保存したコードを実行し、プッシュします。

image26

プッシュが完了した後、ECR のサービスへ移動します。

ECR のリポジトリをクリックします。

先程作成したイメージタグが表示されました。

image27

次に、デプロイで必要な IAM を設定します。

IAM のサービスへ移動します。

image28

左メニュの『ロール』をクリックします。

image29

『ロールを作成』をクリックします。

image30

『CodeDeploy』をクリックします。

image31

ユースケースの選択で、『CodeDeploy - ECS』を選択します。

image32

『次のステップ』をクリックします。

image33

ポリシー名が作成された後、『次のステップ』をクリックします。

image34

『次のステップ』をクリックします。

image35

ロール名を入力し、『ロールの作成』をクリックします。

image36

IAM ロールが完成しました。

image37

ECS のサービスへ移動します。

左メニュの『タスク定義』をクリックします。

image38

『新しいタスク定義の作成』をクリックします。

image39

FARGATE を選択し、『次のステップ』をクリックします。

image40

タスク定義名を入力します。

image41

タスクメモリ、タスク CPU を選択します。

image42

『コンテナの追加』をクリックします。

image43

コンテナ名を入力します。

image44

イメージは、ECR のサービスのリポジトリからコピーします。

image45

メモリ制限を 128 とします。

また、ポートマッピングを 80 とします。

image46

環境で、CPU ユニットを 256 とします。

image47

『追加』をクリックします。

image48

画面下部の『作成』をクリックします。

image49

『タスク定義の表示』をクリックします。

image50

『アクション』をクリックし、『サービスの作成』を選択します。

image51

起動タイプで FARGATE を選択します。

image52

サービス名を入力します。

image53

タスクの数を入力します。

image54

デプロイメントタイプで、『AWS Code Deploy』を選択します。

image55

『次のステップ』をクリックします。

image56

先程作成した、VPC とサブネットを選択します。

image57

セキュリティグループの『編集』をクリックします。

割り当てられたセキュリティグループは、『既存のセキュリティグループ』を選択します。

また、セキュリティグループは、『default』を選択します。

image58

『保存』をクリックします。

image59

パブリック IP の自動割り当ては、『DISABLED』を選択します。

image60

ロードバランサーの種類は、Application Load Balancer を選択します。

image61

『ロードバランサーに追加』をクリックします。

image62

ポートを 80 とします。

image63

テストリスナーポートを 8080 とします。

image64

ターゲットグループのヘルスチェックパスに/index.php を指定します。

image65

『次のステップ』をクリックします。

image66 『次のステップ』をクリックします。

image67

『サービスの作成』をクリックします。

image68

『サービスの表示』をクリックします。

image69

サービスが立ち上がりました。

image70

EC2 のサービスに移動します。

左メニューのロードバランサーを開き、説明の DNS 名をコピーします。

image71

ブラウザのアドレスバーにペーストし、実行すると、

image72

コンテナが起動し、ホスト名を表示することができました。

ブログ一覧