EC2にDocker環境を構築したときのメモ
DjangoとReactでartmuseumというウェブアプリケーションを作りました。
Githubに上げてあるソースコードをEC2に上げたときのメモを残しておこうと思います。
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