ECR
2つのリポジトリを作る
ローカルでの実行
ECRにログイン
aws ecr get-login-password --region ap-northeast-1 | docker login --username AWS --password-stdin {アカウントID}.dkr.ecr.ap-northeast-1.amazonaws.com
イメージにタグをつける
docker tag {image name 1}:latest {アカウントID}.dkr.ecr.ap-northeast-1.amazonaws.com/{ECRリポジトリ 1}:latest
docker tag {image name 2}:latest {アカウントID}.dkr.ecr.ap-northeast-1.amazonaws.com/{ECRリポジトリ 2}:latest
push
docker push {アカウントID}.dkr.ecr.ap-northeast-1.amazonaws.com/{ECRリポジトリ 1}:latest
docker push {アカウントID}.dkr.ecr.ap-northeast-1.amazonaws.com/{ECRリポジトリ 2}:latest
EC2
下記ファイルを作成する
deploy.sh
#!/bin/bash
# AWSリージョンとアカウントIDの設定
REGION="ap-northeast-1"
ACCOUNT_ID="{アカウントID}"
# リポジトリ名の設定
FRONTEND_REPO="{ECRリポジトリ 1}"
BACKEND_REPO="{ECRリポジトリ 2}"
# ECRにログイン
aws ecr get-login-password --region $REGION | docker login --username AWS --password-stdin $ACCOUNT_ID.dkr.ecr.$REGION.amazonaws.com
# 最新のDockerイメージをプル
docker pull $ACCOUNT_ID.dkr.ecr.$REGION.amazonaws.com/$FRONTEND_REPO:latest
docker pull $ACCOUNT_ID.dkr.ecr.$REGION.amazonaws.com/$BACKEND_REPO:latest
# 既存のフロントエンドコンテナを停止して削除
docker stop frontend || true
docker rm frontend || true
# 既存のバックエンドコンテナを停止して削除
docker stop backend || true
docker rm backend || true
# フロントエンドコンテナを起動
docker run -d --name frontend -p 80:80 $ACCOUNT_ID.dkr.ecr.$REGION.amazonaws.com/$FRONTEND_REPO:latest
# バックエンドコンテナを起動
docker run -d --name backend -p 8000:8000 $ACCOUNT_ID.dkr.ecr.$REGION.amazonaws.com/$BACKEND_REPO:latest
echo "Deployment completed successfully."
$ scp -i ~/.ssh/keyPair.pem deploy.sh ubuntu@{ec2-ipv4}:/home/ubuntu/deploy.sh
AWS CLIとDockerEngineをEC2にインストール
# まず、unzipをインストールします。
sudo apt-get update
sudo apt-get install -y unzip
# AWS CLIのダウンロードとインストール
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
#インストール確認
aws --version
# Dockerのパッケージをインストールするために必要なパッケージをインストール
sudo apt-get update
sudo apt-get install -y \
ca-certificates \
curl \
gnupg \
lsb-release
# Dockerの公式GPGキーを追加
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# Dockerのリポジトリをセットアップ
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# Dockerエンジンのインストール
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
# Dockerサービスの起動と有効化
sudo systemctl start docker
sudo systemctl enable docker
# 現在のユーザーをdockerグループに追加して、sudoなしでdockerコマンドを実行できるようにする
sudo usermod -aG docker $USER
# ユーザーグループの変更を反映するために再ログインが必要
newgrp docker
aws configureで認証を通る必要がある。
EC2内にプロファイラを設定しておく
aws configure
スクリプトを実行してデプロイを行います。
chmod +x /home/ubuntu/deploy.sh
/home/ubuntu/deploy.sh
# credentialを使ってECRにログイン
aws ecr get-login-password --region ap-northeast-1 | docker login --username AWS --password-stdin {account ID}.dkr.ecr.ap-northeast-1.amazonaws.com