Route53, GCE, React, FastAPIを用いて簡単なWebアプリを作製する 【後編】


なんの記事?

以下の記事の後編になります。

GCEでのインスタンス作成、起動

下記に従い今回は進めていきます。

インスタンスの作成

からインスタンスを作成します。

外部からの通信を許可したいので、httpsトラフィックを許可します。

自動再起動はオフにしておきます。

起動したので、VM内にsshします。

VM内での環境構築

を参考に

  • docker-composeの導入
  • GitHubからのリポジトリクローン
  • https通信の穴あけ

を行います。

$ sudo apt update
$ sudo apt install apt-transport-https ca-certificates curl gnupg2 software-properties-common
>> OK

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

$ sudo apt update
$ apt-cache policy docker-ce
$ sudo apt install docker-ce
$ sudo systemctl status docker
$ docker --version
>> Docker version 20.10.8, build 3967b7d
$ sudo usermod -aG docker ${USER}

一旦ログアウトし直し、docker-composeの設定を続けます。
今回はdocker-composeのイメージを利用します。

$ docker run docker/compose:1.22.0 version

リポジトリをクローンした後、ビルドします。
--recursive を行う場合は公開鍵認証が別途必要なので、暫定で対応します。

$ git clone https://github.com/izuna385/arxiv-checker.git
$ cd arxiv-checker
$ rm -r -f backend
$ git clone https://github.com/izuna385/arxiv-checker-backend
$ mv arxiv-checker-backend backend
$ docker run --rm \
    -v /var/run/docker.sock:/var/run/docker.sock \
    -v "$PWD:/rootfs/$PWD" \
    -w="/rootfs/$PWD" \
    docker/compose:1.22.0 -f docker-compose.prod.yml up -d --build

ここまで行った後、外部IPを見に行きます。

http通信では表示が確認できました。

Route53を用いたDNS解決

最後にRoute53で接続まで行います。

レコードを作成した後、アドレスにアクセスします。

これにて、デプロイすることが出来ました。(現在はVMを停止しており、アクセスは出来ません。)

改善点

  • https通信では表示されず、原因を確認中です。分かり次第追記します。
  • この構成だと、大量にアクセスが来たときにスケールしません。フロントとバックエンドでそれぞれ、大量アクセスが来た時にスケールするよう構成を見直す必要があります。

リポジトリ