🐣
DockerイメージをECRにpushしよう!
こんにちは。2024年2月からトッカシステムズにジョインした佐藤です。
今回はDockerイメージをビルドしてAWSのECRにpushする手順をまとめてみたいと思います。
ECRとは?
Elastic Container Repositoryの略でAWSによるフルマネージドなリポジトリを作成できるサービスです。
Dockerイメージに特化しており、CodeBuildやCodeDeployなどのAWSサービスに連携してCI/CDパイプラインを構築することができます。
Dockerイメージを作成
こちらのサンプルアプリをイメージとして構築します。
まずはアプリをGithubからcloneします。
$ git clone git@github.com:docker/getting-started-app.git
アプリをbuildするためのDockefileを作成します。
$ cd getting-started-app/
$ vi Dockerfile
viエディターでDockerfileに下記の内容を記述します。
# syntax=docker/dockerfile:1
FROM node:18-alpine
WORKDIR /app
COPY . .
RUN yarn install --production
CMD ["node", "src/index.js"]
EXPOSE 3000
Dockerfileをbuildして、runしてみます。。
$ docker build -t getting-started .
$ docker run -dp 127.0.0.1:3000:3000 getting-started
784809474fc0b58586760f55bba94a1689971ac6746d52935017bcf779f08c35
早速localhostに接続してみましょう!
簡易的なTodoアプリができました。
アクセスするとこんな感じ
Todoを作れます
ECRに接続する
ECRに接続しましょう。
ここでは環境にAWS CLIインストールがされていることを前提としています。
$ aws ecr get-login-password --region ap-northeast-1 \
--profile [your profile] | docker login --username AWS \
--password-stdin [your account ID].dkr.ecr.ap-northeast-1.amazonaws.com
Login Succeeded
リポジトリを作成してイメージをpush
push先のリポジトリを作成します。
ここからはAWS公式ドキュメントを参考にしています。
$ aws ecr create-repository \
--repository-name test \
--region ap-northeast-1 --profile [your profile]
$ docker tag test:latest [your account ID].dkr.ecr.region.amazonaws.com/test
$ docker push [your account ID].dkr.ecr.ap-northeast-1.amazonaws.com/test:latest
最後にpushしたイメージがpullできるか検証してみます。
$ docker pull [your account ID].dkr.ecr.ap-northeast-1.amazonaws.com/test:latest
latest: Pulling from test
Digest: sha256:e509072007ff495f1acd6320c88e479abb98029aa8cd92a50d35a4567662e3df
Status: Image is up to date for [your account ID].dkr.ecr.ap-northeast-1.amazonaws.com/test:latest
[your account ID].dkr.ecr.ap-northeast-1.amazonaws.com/test:latest
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
[your account ID].dkr.ecr.ap-northeast-1.amazonaws.com/test latest 393e8e66bc6d 4 hours ago 223MB
無事うまくいったようです。めでたしめでたし。
まとめ
- イメージをpushする際はAWSCLIを使用します
- ECRリポジトリはAWSCLIによる認証で接続します
- AWSでdocker環境を開発する際はECRでイメージ管理しましょう!
Discussion