![見出し画像](https://assets.st-note.com/production/uploads/images/61183729/rectangle_large_type_2_b3b1c3c8b7f075df867976d3bfd04b2c.png?width=800)
Docker×Rails×Nuxtデプロイの知識をまとめてみる
自身で制作しているアプリがある程度形になってきたのでデプロイしようと思います。
そのための事前学習として使う技術をまとめてみました。
開発環境で使っている技術
https://qiita.com/Shogo1222/items/8b8fc4c65632844a453f
Docker
仮想環境を構築するためのツール
https://engineer-life.dev/docker/
引用してざっくり説明すると
「あるアプリに必要な環境をOSレベルでパケージ化してま止めた箱」
メリットとしては
環境構築の難易度が下がる。
環境に依存せずに動作する。
そのため個人のPCの違いに関わらず同じ環境で作業することができます。
DockerCompose
コンテナ同士を一つのコマンドでどういう感じで動かすかを設定できるファイル
私の環境だと
db→PostgreSQL
api→Rails
front→Nuxt
この3つのコンテナがあります。
これを3つ同時に起動してくれる便利なやつです。
docker-compose がないとそれぞれのコンテナをdocker-start dbなどして3つコマンドを打たなくてはならず、なおかつdb→api→front の順番で起動しなければならないので順番にも気をつけなければなりません。
この「コンテナをそれぞれを順番通りに全て起ち上げて」という処理をdocker-compose.ymlファイルに記述しておくと「docker-compose up」というコマンドで全部やってくれるというのがdocker-compose
PostgreSQL
今回使用するデータベース。
Userのデータなどを保存しておくところです
github
コードを保存しておき、かつ変更履歴の管理をしてくれるもの
CircleCI
これが私には全然馴染みが無いものでした
Saas型のCI/CDサービス。
SaaS型?
SaaSとは「Software as a Service」の略で、日本語だと「サービスとしてのソフトウェア」という意味です。従来パッケージソフトとして提供されていた機能が、クラウドサービスとして提供される形態のことであり、わかりやすくいうとSaaSはクラウドの一部です。
CI?
CIとは、Continuous Integrationのこと。「継続的インテグレーション」といいます。開発中にmaster(main)ブランチに頻繁に結合するプロセスです。1回の変更量を小さくして頻繁に結合しようよという感じ
CD?
Continuous Delivery or Deploymentのこと。「継続的デリバリー/デプロイ」 継続的に「デプロイ可能な状態」にしようということです。
結局CircleCIって?
githubと連携してmainブランチにpushしたら勝手にテストをして勝手にデプロイ環境に反映してくれるシステム
ECR(AWSのサービスの一つ)
ECRとは Amazon Elastic Container Registry完全マネージド型のDockerコンテナレジストリのことを指します
今回はここにdockerのimageを保存します
柔軟に、コンテナーに、イメージを、登録出来るサービス
ECS
DockerComposeと同じようなオーケストレーションツール
開発環境ではDockerとDockerComposeを使っていましたが、本番環境ではECRとECSを用います。
ALB
Application Load Balancer
ロードバランサーって?
Webサイトへのアクセス集中やサーバー故障などの場合でも、アクセス中の利用者に安定したサービス提供を継続可能にする機能
https://www.kagoya.jp/howto/it-glossary/network/loadvalancer/
https://www.wafcharm.com/blog/difference-between-alb-and-elb/
Route53
AWSアカウントにドメインを紐づけします。
ACM
Route53で登録したドメインに、証明書を発行でき、簡単に常時SSL化出来ます。SSL化っていうのは「http」じゃなくて「https」でアクセス出来るということ
terraform
引用:Terraformとは、HashiCorp社により開発されているオープンソースのインフラ自動構築ツールです。TerraformではAWSなどのクラウドサービス上のインフラリソース(例えばサーバやネットワークなど)をコードで定義します。
VPC
Amazon Virtual Private Cloud
上記記事引用:AZは、ap-northeast-1a、ap-northeast-1c、ap-northeast-1dといったように、複数のゾーンに分けられます。
これらのAZには、基本的には同じ内容のコピーが置かれます。もし、1aに災害が起こったときに、1cに置いてあるコピーにアクセス出来るように・・・といったような使い方がされます。
サブネットは、AZの中でさらに分けられたエリアのことです。サブネットはAZを跨ぐことができません。このサブネットに、EC2インスタンスなどを配置してネットワーク上にアサイン出来ます。すごい!
これらのサブネットには、みんなが見れるようにインターネットにアクセス出来るように設定したパブリックサブネットと、みんなが見れないようインターネットにアクセス出来ないように設定したプライベートサブネットという概念が存在します。
VPC>AZ>サブネットというレイヤーになっています。
東京ディズニーランドと、中国ディズニーランドがあって、東京が地震とかでいけなくなったら中国のディズニーランド行けるよねって感じの発想。トゥーンタウンとかがパブリックサブネットで、スタッフルームはプライベートサブネット。
この記事が気に入ったらサポートをしてみませんか?