🐶

Docker環境で構築したアプリケーションをAWS EC2 にデプロイする方法

2024/08/06に公開

はじめに

ローカル環境でDockerを用いてFastAPIで作成したアプリケーションを作成していました
それを今回はAWS EC2を使ってデプロイする方法をご紹介します

前提

  • Docker環境ですでに何かしらのアプリケーションを作成している
  • Github上にプロジェクトがある

手順

インスタンス作成

  1. EC2ダッシュボードに移動

  2. インスタンスを起動

  3. 名前の入力

  4. Amazon マシンイメージは Ubuntu を選択

  5. インスタンスタイプ はt2.micro (今回は無料のt2.microにしました。規模に合わせて変えてください)

  6. キーペア (ログイン) の設定(これはSSH接続できるようにするため)

    • 新しいキーペアの作成をクリック

  7. Network settings

    1. SSH トラフィックを許可
    2. HTTPS トラフィックを許可
    3. HTTP トラフィックを許可(FastAPIがHTTPのみをサポートしているため)

作成したインスタンスに接続

  1. インスタンス一覧から接続したいインスタンスのインスタンスIDをクリック
  2. 「〇〇のインスタンス概要」から「接続」をクリック
  3. 「SSHクライアント」から接続

ディレクトリーをキーのところまで移動して以下を実行

cd [.sshがあるフォルダ]
chmod 400 "〇〇-key.pem"
ssh -i "〇〇-key.pem" ubuntu@ec2-〇〇-〇〇〇-〇〇〇-〇〇〇.ap-northeast-1.compute.amazonaws.com

Dockerのインストール (Ubuntuの場合)

パッケージリストを更新

sudo apt update

必要なパッケージをインストール

sudo apt install -y apt-transport-https ca-certificates curl software-properties-common

Dockerの公式GPGキーを追加

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

Dockerリポジトリを追加

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

パッケージリストを更新してDockerをインストール

sudo apt update
sudo apt install -y docker-ce

Dockerを起動して自動起動を有効にする

sudo systemctl start docker
sudo systemctl enable docker

現在のユーザーをdockerグループに追加

sudo usermod -aG docker ${USER}

グループの変更を反映するために新しいシェルを開く

newgrp docker

Docker Composeのインストール

sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

Githubにあるプロジェクトをcloneする

SSHキーを生成してGitHubに追加する

SSHキーを生成

ssh-keygen -t rsa -b 4096 -C "example@mail.com"

公開鍵の内容を表示

cat ~/.ssh/id_rsa.pub

Githubアカウントの設定

  • GitHubにログインし、右上のプロフィールアイコンをクリックして「Settings」を選択。
  • 左側のメニューから「SSH and GPG keys」を選択。
  • 「New SSH key」ボタンをクリック。
  • 適切なタイトルを入力し、公開鍵をペーストして「Add SSH key」をクリック。

リポジトリをクローン

cd ~
git clone あなたのプロジェクトのpassword-protected SSH key
cd あなたのプロジェクト

環境変数がある場合は設定

# .envファイルを作成
touch .env

# エディタで開く
vim .env

# 必要な環境変数を記入

Dockerコンテナをビルドして起動する

Dockerコンテナをビルド

docker-compose build

Dockerコンテナを起動(-d でログの非表示)

docker-compose up -d
株式会社Xronotech

Discussion