医療記事に関するレポート

スクリーンショット 2021-07-18 1.21.07.png

医療記事の難しさ2

Heroku は、ポピュラーな VCS (バージョン管理システム) である Git​ でアプリのデプロイを管理します。Heroku にコードをデプロイするには、決して Git の専門家である必要はありませんが、基本を学習しておくと役立ちます。

前提条件: Git および Heroku CLI のインストール

Git でのアプリの追跡

アプリが Git リポジトリですでに追跡されている場合は、「Heroku リモートの作成​」に進んでください。

Heroku にアプリをデプロイするには、その前にローカル Git リポジトリを初期化し、アプリケーションコードをそれにコミットする必要があります。

次の例では、myapp​ ディレクトリで稼働するアプリ用の Git リポジトリの初期化について説明します。

$ cd myapp
$ git init
Initialized empty Git repository in .git/
$ git add .
$ git commit -m "My first commit"
Created initial commit 5df2d09: My first commit
44 files changed, 8393 insertions(+), 0 deletions(-)
create mode 100644 README
create mode 100644 Procfile
create mode 100644 app/controllers/source_file
...

必ずアプリのルートディレクトリで Git リポジトリを初期化してください。アプリがリポジトリのサブディレクトリにある場合、アプリは Heroku にプッシュされるときに実行しません。

アプリのコードは現在、ローカル Git リポジトリで追跡されています。まだ、リモートサーバーにプッシュされていません。

Heroku リモートの作成

Git リモート​は、他のサーバー上で稼働するリポジトリのバージョンです。アプリに関連付けられた、Heroku でホストされる特別なリモートにコードをプッシュすることにより、アプリをデプロイします。

新しい Heroku アプリの場合

heroku create​ CLI コマンドは、関連した空の Git リポジトリとともに新しい空のアプリケーションを Heroku 上に作成します。アプリのルートディレクトリからこのコマンドを実行した場合、空の Heroku Git リポジトリがローカルリポジトリのリモートとして自動的に設定されます。

$ heroku create
Creating app... done, ⬢ thawing-inlet-61413
https://thawing-inlet-61413.herokuapp.com/ | https://git.heroku.com/thawing-inlet-61413.git

git remote​ コマンドを使用して、heroku​ という名前のリモートがアプリに合わせて設定されていることを確認できます。

$ git remote -v
heroku https://git.heroku.com/thawing-inlet-61413.git (fetch)
heroku https://git.heroku.com/thawing-inlet-61413.git (push)

既存の Heroku アプリの場合

Heroku アプリをすでに作成している場合は、heroku git:remote​ コマンドでローカルリポジトリにリモートを簡単に追加できます。必要なものは、Heroku アプリの名前だけです。

$ heroku git:remote -a thawing-inlet-61413
set git remote heroku to https://git.heroku.com/thawing-inlet-61413.git

リモート名の変更

デフォルトで、Heroku CLI は、アプリ heroku​ に対して作成するすべての Heroku リモートに名前を付けます。git remote rename​ コマンドで、リモートの名前を変更できます。

$ git remote rename heroku heroku-staging

同じコードベースを使用する複数の Heroku アプリがある場合、Heroku リモートの名前を変更しておくと便利です (アプリのステージングバージョンと本番環境バージョンなど)。この場合、各 Heroku アプリには、ローカルリポジトリに独自のリモートがあります。

この記事の残りでは、アプリには heroku​ という名前の単一の Heroku リモートがあると想定しています。

コードのデプロイ

アプリを Heroku にデプロイするには、通常、次のように git push​ コマンドを使用して、ローカルリポジトリの master​ ブランチから heroku​ リモートにコードをプッシュします。

$ git push heroku master
Initializing repository, done.
updating 'refs/heads/master'
...

最新のコミット済みバージョンのコードを Heroku にデプロイしようとする場合はいつでも、この同じコマンドを使用します。

Heroku は、heroku​ リモートの master​ ブランチにプッシュするコードだけをデプロイすることに注意してください。リモートの別のブランチにコードをプッシュしても効果はありません。

マスター以外のブランチからのデプロイ

ローカルリポジトリの非 master​ ブランチ (testbranch​ など) から Heroku にコードをデプロイする場合、次の構文を使用して、リモートの master​ ブランチにプッシュされるようにします。

$ git push heroku testbranch:master

他の多くの依存関係の解決方針​に加え、Git サブモジュールに依存するアプリケーションがサポートされます。

git lfs​ はサポートされておらず、これを使用するとプッシュが失敗することがあります。

ビルドプロセスからの分離

git push​ で Heroku デプロイを開始した後、Ctrl + C を押して、結果のビルドプロセスから分離できます。これによってビルドもデプロイもキャンセルされることはありません。ビルドはバックグラウンドで続行し、完了するとすぐに、新しいリリース​を作成します。

同時デプロイの解決

同じアプリの以前​のデプロイが完了する前にデプロイを開始することができます。たとえば、アプリの 2 人の共同作業者がほぼ同時に別々のコミットを heroku​ リモートにプッシュすることがあります。

これが行われた場合、異なるバージョンのアプリが、それぞれのビルドが完了した順序で​ Heroku にデプロイされます。この順序は、プッシュが行われた順序とは異なる場合があることに注意してください。

たとえば、A と B の 2 つのビルドを考えてみます。ビルド B がビルド A の後​に開始したが、その前​に終了した場合、Heroku はビルド B を最初​にデプロイします。その後、やがてビルド A が完了すると、Heroku はこれをデプロイして、ビルド B を置き換えます。

スクリーンショット 2021-07-20 23.14.32.png
suppliment_calcium.png

カルシウム

これが効くと言われています

商品ページへ