🙌

EC2にDocker環境を構築したときのメモ

2024/09/08に公開

DjangoとReactでartmuseumというウェブアプリケーションを作りました。
Githubに上げてあるソースコードをEC2に上げたときのメモを残しておこうと思います。
https://github.com/kukanji/art_museum

EC2インスタンスの作成

下の画像の一番右にある「インスタンスを起動」というボタンを押してインスタンスを作成します。
EC2のタグ名とキーペア、セキュリティグループの作成以外はデフォルト値で問題なかったです。

EC2のタグ名を設定

インスタンスに接続するためにキーペアを作成。
自分が認識できるようなファイル名を作成

ネットワークのセキュリティグループはSSH, HTTP, HTTPSの3つのトラフィックを許可して作成しました。

VITEサーバーの5173ポートにもアクセスできるように、インスタンス内のセキュリティタブ>セキュリティグループ>インバウンドのルールを編集からカスタムのポートを追加しました。

インスタンスの起動完了

SSHキーをローカル環境にセット

EC2インスタンス作成時に生成したSSHキーをローカルマシンのホームディレクトリ内の.sshフォルダに移動

EC2インスタンスにSSH接続

$ ssh -i [sshキーのファイル名] [ユーザー名]@[EC2ドメイン]

EC2インスタンスのセットアップ

GitクローンでGitリポジトリにあるアプリケーションのソースコードをEC2に移します。
GitとDockerがEC2インスタンスに存在するか確認したがどちらも入っていなかった

$ docker -v
$ git -v
$ command not found

AmazonLinux2を使っているのでパッケージマネージャyumをアップデート

$ sudo yum update -y

Gitをインストール

$ sudo yum install git

Dockerをインストール

$ sudo yum install docker -y
$ sudo service docker start
$ sudo usermod -a -G docker ec2-user
$ newgrp docker
$ docker -v

docker-composeもインストール

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

Gitリポジトリをクローン

GitリポジトリからクローンするためにローカルPCに置いてあるGitのSSHキーのファイルをEC2インスタンスにコピーする

$ scp -i [EC2インスタンスのSSHキーのパス] [GitのSSHキーのパス] [ユーザー名]@[EC2ドメイン]:.ssh/

GitとEC2の間でSSH接続ができるようになったのでGitリポジトリをEC2にクローンします。
下記コマンドはEC2のインスタンスにSSH接続して行っています。

$ git clone git@github.com:kukanji/art_museum.git

ファイルの権限が緩すぎたためにエラーが出力されました。

Permissions 0644 for [EC2インスタンス内のGitのSSHキーのパス] are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.

そこで、SSHキーのファイル権限を読み込みのみに変更します。

$ chmod 400 [EC2インスタンス内のGitのSSHキーのパス]

もう一度git cloneをするとクローン出来ました。

$ git clone git@github.com:kukanji/art_museum.git

以下のコマンドでDockerが立ち上げようとしましたが、環境変数が無くてエラーが出てしまいました。

$ docker-compose up

.envファイルをSSH接続でEC2インスタンスに送信

$ scp -i [EC2インスタンスのSSHキーのパス] [コピー元の.envファイル] [ユーザー名]@[EC2ドメイン]:[コピー先のディレクトリ]

再度docker-compose upを実行するとコンテナを無事立ち上げることが出来ました。

ブラウザから確認

以上が手順です。
データの投入とJavaScript/CSSのコンパイルがこれからの課題として残っています。

Discussion