1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

初学者向け:ローカルでDockerfileを作成し、AWS CLIでDockerイメージをECRにプッシュしてみた

Last updated at Posted at 2025-01-13

はじめに

AWSでDockerファイルを使用してコンテナイメージを実行する場合、ECR (Elastic Container Registry) にアップロードされたイメージを利用します。

今回は、テスト用のファイルを準備し、ローカル環境でDockerイメージをビルドしてECRにプッシュする手順を解説します。

この記事は、将来の自分への備忘録として、学んだ内容を整理したものです。

ECRについて

Amazon Elastic Container Registry (ECR) は、完全マネージド型のコンテナレジストリサービスです。

スクリーンショット 2024-11-15 22.14.47.png
引用画像:https://zenn.dev/yoshii0110/articles/1de56128d7be2c

さらに詳しく学習されたい方は、AWSの公式サイトをご参照ください。

テスト用ファイルの準備

1. Dockerfile

まず、AWS Lambdaで実行可能なDockerイメージを作成します。以下は、シンプルなPythonアプリケーションを例にしたDockerfileです。

# AWS Lambdaの公式Pythonベースイメージ
FROM public.ecr.aws/lambda/python:3.9

# 必要なライブラリをインストール
COPY requirements.txt .
RUN pip install -r requirements.txt

# アプリケーションコードをコンテナにコピー
COPY app.py .

# Lambda関数のエントリーポイントを指定
CMD ["app.lambda_handler"]

2. app.py

app.py には、Lambda関数のエントリーポイントを定義します。以下はその例です。

app.py
def lambda_handler(event, context):
    return {"statusCode": 200, "body": "Hello, Lambda with Docker!"}

3. requirements.txt

依存関係を管理するための requirements.txt ファイルには、必要なPythonライブラリを記載します。

requirements.txt
flask==2.3.2
requests==2.28.1

このファイルは、Dockerfile内の COPYRUN ステップで使用されます。

Dockerイメージのビルド

以下のコマンドを実行して、Dockerイメージをビルドします。

docker build -t lambda-docker .

コマンド実行例

以下は、実行時の例です。

test git:(honda-branch) ✗ docker build -t lambda-container .
[+] Building 6.5s (4/8)                                                                                        docker:desktop-linux
 => [internal] load build definition from Dockerfile                                                                           0.0s
 => => transferring dockerfile: 432B                                                                                           0.0s
 => [internal] load metadata for public.ecr.aws/lambda/python:3.9                                                              1.1s
・・・
・・・
・・・
What's next:
    View a summary of image vulnerabilities and recommendations → docker scout quickview 

ポイント:

  • -t lambda-docker でイメージに名前を付けています。
  • ビルドに成功すると、Dockerイメージがローカルに作成されます。

ECRリポジトリの作成

AWS CLIを使用して、ECRリポジトリを作成します。

aws ecr create-repository --repository-name lambda-container

実行後、以下のようにリポジトリが作成されていることを確認できます。

Screenshot 2025-01-13 at 20.55.53.png

ECRにDockerイメージをプッシュしてみた

AWS CLIを利用して、DockerイメージをECRにプッシュする手順を紹介します。

普段はマネジメントコンソールで生成されるコマンドを使用していますが、ここでは簡単に一例をご紹介します。

Screenshot 2025-01-13 at 20.58.55.png

1. Dockerレジストリにログイン

AWS CLIを使って認証トークンを取得し、DockerクライアントをAWS ECRレジストリにログインさせます。

aws ecr get-login-password --region <REGION> | docker login --username AWS --password-stdin <ACCOUNT_ID>.dkr.ecr.<REGION>.amazonaws.com

2. Dockerイメージのビルド

Dockerfileを使用して、コンテナイメージをビルドします。

docker build -t <IMAGE_NAME> .

3. Dockerイメージにタグを付与

作成したDockerイメージにタグを付け、ECRリポジトリへプッシュできるようにします。

docker tag <IMAGE_NAME>:latest <ACCOUNT_ID>.dkr.ecr.<REGION>.amazonaws.com/<IMAGE_NAME>:latest

4. DockerイメージをECRにプッシュ

タグ付けしたイメージをAWS ECRにプッシュします。

docker push <ACCOUNT_ID>.dkr.ecr.<REGION>.amazonaws.com/<IMAGE_NAME>:latest

プッシュが成功すると、以下のようにECRにイメージが登録されていることが確認できます。

Screenshot 2025-01-13 at 21.04.35.png

まとめ

この記事では、AWS ECRを利用してDockerイメージを管理する手順を解説しました。

ECRを活用することで、コンテナイメージを効率的に保存・管理できる点が大きなメリットです。

次回は、このコンテナイメージをAWS Lambdaで実行し、サーバーレス環境で動かす方法について解説します!

1
3
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
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?