8
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【Heroku】1つのリポジトリで複数のアプリをデプロイする

Last updated at Posted at 2019-10-23

「初心者がRailsアプリをHerokuにデプロイする方法」のような情報はたくさん出回っています。

しかし、表題のような「1つリポジトリで複数のアプリをデプロイ」みたいな情報は日本ではあまり出回っていません。

ある程度経験を積んでいくと、「DBとのやり取りはAPIサーバー、フロントエンドはWebサーバー」みたいな構成で開発を行う機会が出てくると思います。

今回はその方法を簡単に解説していきます。

こんな人向けの記事

  • 簡単なWebアプリをHerokuでデプロイした経験がある
  • 複数のアプリケーションを1つのリポジトリでデプロイする必要が出てきた

【結論】 Buildpackを使えば簡単

「1つのリポジトリ、複数のApp」のためのBuildpackが2つほど提供されているので、どちらかをBuildpackに含めれば難なくデプロイすることが可能です。

※Buildpackとは

  • Pushしたソースコードをコンパイルするためのスクリプトを集めたもの
  • 今回の表題のような、特殊な用途に対応してくれるスクリプトもある

利用できるBuildpack

heroku-buildpack-multi-procfile

Herokuが公式に提供しているBuildpackですね。

Pushされた時点で環境変数PROCFILEに書かれたPathを参照し、そのディレクトリにあるProcfileをルートディレクトリにコピーしてくれます。

なので、各Appそれぞれに対応するようなPathを環境変数PROCFILEに記述しておけば、「1つのリポジトリ、複数のApp」が可能なわけです。

※Procfileとは

  • Appの起動時に行なってくれるコマンドを指定するためのファイル
  • プロセスタイプ: commandの形式で記述する

heroku-buildpack-monorepo

こちらも公式(?)だと思います。

前者とは違い、環境変数APP_BASEに書かれたPathを参照し、そのディレクトリ丸々をルートディレクトリにコピーしてくれます

筆者はGolangでAPI側の開発も行なっていたのですが、前者のBuildpackだとGo modulesを読み込んでくれず、デプロイできませんでした。
一方、後者は指定ディレクトリがルートディレクトリとなっているため、そのような問題を被ることなくデプロイできました。

終わりに

個人的にはheroku-buildpack-multi-procfileがおすすめですが、他にも利用できるBuildpackがあると思うので、自身で探してみるのもいいかと思います。

8
11
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
8
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?