LoginSignup
0
0

More than 1 year has passed since last update.

【ハンズオン/初学者でも簡単!】Nuxt.jsをFargateでデプロイを行う

Posted at

はじめに

以前こちらのアプリを作成しました。

「デプロイを何でしようかな〜」と思いました。

選択肢は2つです。
①EC2でデプロイ
②Fargateでデプロイ

今回は②のFargateを採用しました。

EC2でも良かったのですが以下の理由から却下しました。
①継続的にソフトウェアのバージョンが形骸化しないようにアップデート、パッチを当てる必要がある。
②多少コストは上がるが、サーバーレスにする方が開発効率向上に繋がる。

ということで、Fargateを使っていきましょう!

アーキテクチャ

arch1.png

前提

以下のインストールと作業が済んでいることが前提です。

・Node.js
・npm
・AWS CLI
・AWS AdministratorAccess権限を持ったユーザー作成

それでは、始めていきます!

ハンズオン

1. AWSへログイン

2. 東京リージョンになっていることを確認

image.png

3. VPCの作成

■ルート
コンソールで「VPC」と検索→左ペイン内の「VPC」を選択→「VPCを作成」を選択

スクリーンショット 2021-09-29 12.06.24.png

4. サブネットを作成

■ルート
コンソールで「VPC」と検索→左ペイン内の「サブネット」を選択→「サブネットを作成」を選択

スクリーンショット 2021-09-29 12.43.17.png

5. Publicサブネットをインターネットに接続するためにInternet Gatewayを作成しアタッチ

■ルート
コンソールで「VPC」と検索→左ペイン内の「インターネットゲートウェイ」を選択→「インターネットゲートウェイの作成」を選択

スクリーンショット 2021-09-29 12.45.25.png

「VPCへアタッチ」をクリックする。

スクリーンショット 2021-09-29 12.46.23.png

作成したVPCにアタッチします。

スクリーンショット 2021-09-29 12.47.07.png

6. EC2がインターネット接続するためにルートテーブルを作成

■ルート
コンソールで「VPC」と検索→左ペイン内の「サブネット」を選択→「Tutorial-Nuxtjs-Pub-1a-001」を選択→「ルートテーブル」を選択→「ルート」へ移動→「ルートを編集」を選択

スクリーンショット 2021-09-29 12.49.41.png

7. Nuxt.jsの準備

Nuxt.jsのアプリケーションを作成します。

ターミナル
❯ npx create-nuxt-app .       

create-nuxt-app v3.6.0
✨  Generating Nuxt.js project in .
? Project name: src
? Programming language: JavaScript
? Package manager: Npm
? UI framework: (Use arrow keys)
? UI framework: None
? Nuxt.js modules: (Press <space> to select, <a> to toggle all, <i> to invert selection)
? Linting tools: (Press <space> to select, <a> to toggle all, <i> to invert selection)
? Testing framework: None
? Rendering mode: Universal (SSR / SSG)
? Deployment target: Server (Node.js hosting)
? Development tools: (Press <space> to select, <a> to toggle all, <i> to invert selection)
? What is your GitHub username? ryo
? Version control system: Git

8. Dockerfileの作成

docker-composeを使ってもいいですが、今回はECRのコマンドに従ってできるDockerfileで作成していきます。

./Dockerfile
# Nodeイメージの取得
FROM node:14.15.3-alpine

# ワーキングディレクトリの指定
WORKDIR /app

# package.json, package-lock.jsonをコピー
COPY package*.json ./

# モジュールをインストール
RUN npm install

# その他のファイルをコピー
COPY . .

# ビルド
RUN npm run build

# ホスト
ENV HOST 0.0.0.0

# ポート
EXPOSE 3000

# 起動
CMD ["npm", "run", "start"]

9. ECRにDockerのイメージをプッシュ

■ルート
コンソールで「ECS」と検索→左ペイン内の「Amazon ECRのリポジトリ」を選択

リポジトリの作成

■ルート
「リポジトリの作成」を選択

スクリーンショット 2021-09-29 13.06.19.png

これでリポジトリが作成できました。
この中に入りましょう。

DockerのイメージをECRにプッシュ

次に、「プッシュコマンドの表示」を選択します。

スクリーンショット 2021-09-29 13.07.35.png

プッシュするために必要な4つのコマンドが表示されるので、
こちらをターミナルで実行しましょう!

スクリーンショット 2021-09-29 13.08.42.png

実行した結果イメージが入っていれば成功です。

スクリーンショット 2021-09-29 13.27.09.png

10. ECSのタスク定義の作成

■ルート
コンソールで「ECS」と検索→左ペイン内の「タスク定義」を選択

スクリーンショット 2021-09-29 13.29.13.png

Fargateを選択しましょう。

スクリーンショット 2021-09-29 13.30.13.png

タスクとコンテナの定義の設定画面に進みます。

スクリーンショット 2021-09-29 13.31.25.png

コンテナの追加を行います。

スクリーンショット 2021-09-29 13.34.23.png

これでタスク定義は完了です。

11. ECSのクラスターの作成

■ルート
コンソールで「ECS」と検索→左ペイン内の「クラスター」を選択

スクリーンショット 2021-09-29 13.37.20.png

「ネットワーキングのみ」を選択します。

スクリーンショット 2021-09-29 13.37.56.png

クラスター名を設定します。

スクリーンショット 2021-09-29 13.39.02.png

これで完成です。

12. ECSのサービスの作成

では、最後にサービスの作成をしてデプロイしましょう。

スクリーンショット 2021-09-29 13.40.18.png

設定を以下のように行います。

スクリーンショット 2021-09-29 13.41.26.png

ネットワーク構成に関しては以下のように設定しましょう。

スクリーンショット 2021-09-29 13.43.06.png

また、セキュリティグループの作成をしましょう。

スクリーンショット 2021-09-29 13.44.54.png

これでOKです。

その後のオートスケーリングに関してはデフォルトのままでOKです。

スクリーンショット 2021-09-29 13.51.15.png

では、アドレスを確認しましょう。

スクリーンショット 2021-09-29 13.49.59.png

無事ページにアクセスできました!
これでOKです。

スクリーンショット 2021-09-29 13.52.38.png

終わりに

Fargateでデプロイできました!
結構簡単だと思います^^

ただこのままだとポート番号がないとアクセスできないなどの問題があります。
ロードバランサーや独自ドメインの取得、Route53などに関しては追記するか、新たな記事を作るのでお待ちください!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0