この記事について
以下のようなプロジェクトでサブディレクトリ(server/)をherokuにデプロイする話です
今回のプロジェクトではgoを使ってます
├─data
├─db
├─docker
├─front
├─scraping
└─server
├─domain
├─infrastructure
├─interfaces
│ ├─controllers
│ └─database
├─usecase
└─utils
Docker環境のherokuへのよくあるデプロイ
トップディレクトリにmainファイルが存在し、そこにDockerfileやheroku.ymlが存在する
この場合だといろいろ設定してgit push heroku master
でいけそう
今回の場合
frontもserverも同じリポジトリで管理している
serverディレクトリのみをherokuでデプロイしたい
手順
以下のサイトに詳しく書いてあります
このサイトではサブディレクトリをデプロイする話がメインなので省略しつつ進めます
heroku createでアプリ作成
heroku create
postgresql使う人は用意しましょう
addsonでsql用意
heroku addons:create heroku-postgresql:hobby-dev
psqlに接続してデータベースを作りたい場合は下記の記事を参考にしてください
herokuの環境変数まわり
dbとの接続先などを取得しときましょう
heroku config
以下の記事が参考になりました
heroku container:login
イメージのデプロイ前にloginもしておきましょう
Dockerfileのあるディレクトリに移動しイメージのデプロイ
heroku container:push web
参考ファイル
以下はpushしたいサブディレクトリ内に用意しました
build:
docker:
web: Dockerfile
run:
web: go run main.go
FROM golang:1.17.0-alpine
RUN apk update && apk add git
WORKDIR <work_dir>
COPY . .
あとはherokuのmasterにサブディレクトリを指定してpushします
以下のコマンドはトップディレクトリで実行しましょう
(subfolderは自分の場合だとserverになります)
git subtree push --prefix <subfolder> heroku master
heroku open
参考記事
どこで沼にはまったか
自分のプロジェクトではDockerfile
を別ディレクトリで管理してたため
サブディレクトリをpushした場合、Dockerfile
が含まれていませんでした
それに気が付かずかなり沼ってしまった...😢