4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Herokuのサブディレクトリをデプロイする方法まとめ

Last updated at Posted at 2021-07-18

個人の Web サービス開発でモノレポ構成のアプリのサブディレクトリを Heroku にデプロイするため、どのような方法があるのかを調べましたのでまとめます。

前提

root のディレクトリから API とフロントをサブディレクトリに分けて開発しており、 API(Rails製) 用のサブディレクトリをデプロイします。

ディレクトリ構成は下記の通りです。

$ tree -L 2
.
├── README.md
├── api
│   ├── Dockerfile
│   ├── Gemfile
│   ├── Gemfile.lock
│   ├── Rakefile
│   ├── app
│   ├── bin
│   ├── config
│   ├── config.ru
│   ├── db
│   ├── heroku.yml
│   ├── lib
│   ├── log
│   ├── public
│   ├── storage
│   ├── tmp
│   └── vendor
├── docker-compose.yml
├── front
│   ├── Dockerfile
│   ├── README.md
│   ├── components
│   ├── node_modules
│   ├── nuxt.config.js
│   ├── package.json
│   ├── pages
│   ├── plugins
│   ├── static
│   ├── store
│   ├── tsconfig.json
│   └── yarn.lock
└── netlify.toml

なお、api/ には heroku.yml というファイルがあります。 このファイルを利用して、Docker イメージをビルドしデプロイしています。
heroku.yml を使用して Docker イメージをビルドする | Heroku Dev Center

1. ビルドパックを使う

  • 👍 ソースコードの追加不要で GitHub のリポジトリと連携し自動デプロイができる

調べた中では一番ノーコードで実現できるため良さそうでしたが、heroku.yml を利用した Docker イメージのデプロイは対応しておらず断念。

参考: Deploy to Heroku / GitHub Actions

2. GitHub Actionsを使う

  • 👍 GitHubと連携できるので Git の秘匿情報を隠蔽できる
  • 👎 Herokuの秘匿情報はGitHub Secretsで管理するので少し手間

heroku.yml を利用した Docker イメージのデプロイが成功し、この方法を採用。

参考: GitHub - timanovsky/subdir-heroku-buildpack

3. git subtreeコマンドを使う

  • 👍 ローカルのターミナルや GitHub、CircleCI どこからでも実行でき汎用性が高い
  • 👎 Git や Heroku の秘匿情報の管理が手間

参考: git - Automated heroku deploy from subfolder - Stack Overflow

補足) Netlifyにサブディレクトリをデプロイする方法

今回は、フロントエンド用(Nuxt.js製) のfront/ディレクトリを Netlify にデプロイしました。
こちらは ドキュメントが整備されており、 root のディレクトリに netlify.toml ファイルを配置し、サブディレクトリを定義することで簡単に実現できました。

参考: File-based configuration | Netlify Docs

4
1
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
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?