はじめに
Fargateについて知識を深めるために構築してみた
まずはFargateのdockerfileをECRにプッシュしてみました。
手順
東京リージョンを選択してcloudshellを起動する。
dockerfile格納用のフォルダを作成する
dockerfile格納用のフォルダ作成
mkdir Fargate
Fargateのフォルダを作成する。
cd Fargate
現在のパスを確認する
$ pwd
/home/cloudshell-user/Fargate
dockerfileファイルを作成する
dockerfileファイルを作成する
$ vi dockerfile
# Amazon Linux 2023 ベースイメージを使用
FROM amazonlinux:2023
# httpd をインストール
RUN dnf -y install httpd && dnf clean all
# 必要なポートを公開
EXPOSE 80
# Apache を前景モードで起動
CMD ["/usr/sbin/httpd", "-D", "FOREGROUND"]
ECRにプライベートリポジトリにリポジトリを作成する
サービス >> ECR >> 左ペインのリポジトリをクリックする。
プライベートリポジトリの画面にて[リポジトリを作成]をクリックする。
※赤枠以外はデフォルト値でプライベートリポジトリを作成しました。
作成したtestのリポジトリをクリックして[プッシュコマンドを表示]するをクリックする
ECRのプライベートリポジトリへイメージをプッシュする
1.認証トークンを取得し、レジストリに対して Docker クライアントを認証します。AWS CLI を使用してください:
※AWS CLI および Docker 向けの最新バージョンがインストールされていることを確認します。
今回cloudshellのため、CLIとdockerが入っていました。
dockerfileが格納されているフォルダでプッシュコマンドを実行する必要があります。
カレントディレクトリは確認必要
Fargate $ pwd
/home/cloudshell-user/Fargate
Fargate $ ls -tlr
total 4
-rw-r--r--. 1 cloudshell-user cloudshell-user 269 May 3 04:49 dockerfile
Fargate $
Fargate $ aws ecr get-login-password --region ap-northeast-1 | docker login --username AWS --password-stdin AWSアカウント番号.dkr.ecr.ap-northeast-1.amazonaws.com
WARNING! Your password will be stored unencrypted in /home/cloudshell-user/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded
以下のコマンドを使用して、Docker イメージを構築します。
Fargate $ docker build -t test .
出力結果を省略
[+] Building 29.6s (6/6) FINISHED
=> => naming to docker.io/library/test
構築が完了したら、このリポジトリにイメージをプッシュできるように、イメージにタグを付けます。
イメージタグのバージョンを1としました。
$ docker tag test:latest AWSアカウント番号.dkr.ecr.ap-northeast-1.amazonaws.com/test:1
出力結果なし
以下のコマンドを実行して、新しく作成した AWS リポジトリにこのイメージをプッシュします:
Fargate $ docker push AWSアカウント番号.dkr.ecr.ap-northeast-1.amazonaws.com/test:1
出力結果
The push refers to repository [AWSアカウント番号.dkr.ecr.ap-northeast-1.amazonaws.com/test]
8c9fd5663bb5: Pushed
74a0024ff955: Pushed
1: digest: sha256:e893a0f98665ec557e19dee87786dd578d740311d0877a1b0b432d2caec9d2fe size: 741
Fargate $
ECRのプライベートリポジトリにイメージが作成されたことを確認
プッシュすることでイメージタグ1のイメージが作成されていることを確認した。
補足情報
イメージタグをlatestに指定した場合は、イメージ名がlatestと表示されます。
バージョンごとにイメージを管理している場合は、latestではなくバージョン名を指定してください
Fargate $ docker tag test:latest AWSアカウント番号.dkr.ecr.ap-northeast-1.amazonaws.com/test:latest
Fargate $ docker push AWSアカウント番号.dkr.ecr.ap-northeast-1.amazonaws.com/test:latest
まとめ
FargateはcloudshellからECRへイメージをプッシュ出来ることが分かりました。
EC2からECRへイメージをプッシュする場合は、EC2にてCLIとdockerのパッケージが入っている必要があります。
ECRのイメージをプッシュする際は、dockerfileが格納してあるフォルダに移動してコマンドを実行する必要があります。フォルダを誤ると事故の元です。


