3
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?

RCC (立命館コンピュータークラブ)Advent Calendar 2024

Day 4

Heroku CLIでサブディレクトリをデプロイする

Last updated at Posted at 2024-12-04

はじめに

Herokuへのデプロイで、プロジェクトのサブディレクトリをデプロイしたい!
そんな時に実践したことの共有記事です。
Heroku CLIを使用してサブディレクトリをデプロイする具体的な手順を解説します。

前提条件

  • Heroku CLIがインストールされていること
  • Herokuアカウントを持っていること
  • Gitを使用していること

実装手順

1. Herokuアプリケーションの作成

Herokuのアプリケーションを作成します

heroku create <your-app-name>

ログインしていない方は以下のコマンド(q以外のキーを押して、Webでログイン)

heroku login

アプリケーション名は世界で唯一の名前

被っていた場合、以下のようなエラーが出る

heroku create heroku-demo
 ›   Warning: heroku update available from 8.7.1 to 9.3.2.
Creating ⬢ heroku-demo... !
 ▸    Name heroku-demo is already taken

2. Git Remoteの追加

Herokuのリモートリポジトリを追加します

heroku git:remote -a <your-app-name>

以下のようにすると一つのgitリポジトリに複数のHerokuリモートリポジトリを設定することも可能

git remote add heroku-staging https://git.heroku.com/<your-app-name1>.git
git remote add heroku-production https://git.heroku.com/<your-app-name2>.git

3. サブディレクトリのデプロイ

サブディレクトリをデプロイするには、git subtree pushを使用します

git subtree push --prefix=<サブディレクトリ名> heroku main

4. デプロイの確認

デプロイが成功したかどうかを確認するためには、heroku logsを使用します

heroku logs --tail

簡易デモ

1. デプロイするアプリ作成(Go)

mkdir heroku-demo
cd heroku-demo

## main.goの作成
cat << EOF > go/main.go
package main
import (
	"fmt"
	"net/http"
	"os"
)
func handler(w http.ResponseWriter, r *http.Request) {
	fmt.Fprintf(w, "Hello, World!")
}
func main() {
	// $PORT 環境変数を取得
	port := os.Getenv("PORT")
	if port == "" {
		port = "8080" // デフォルトポート(ローカル開発用)
	}
	http.HandleFunc("/", handler)
	// 指定されたポートでサーバーを開始
	fmt.Printf("Listening on port %s...\n", port)
	err := http.ListenAndServe(":"+port, nil)
	if err != nil {
		fmt.Printf("Error starting server: %v\n", err)
	}
}
EOF

## Dockerfileの作成
cat << EOF > go/Dockerfile
# 使用するベースイメージ
FROM golang:1.23-alpine
# 作業ディレクトリを作成
WORKDIR /app
# Goコードをコンテナにコピー
COPY . .
# Goアプリケーションのビルド
RUN go mod tidy
RUN go build -o main .
# アプリケーションを8080ポートで実行
CMD ["./main"]
EXPOSE 8080
EOF

## heroku.ymlの作成
cat << EOF > go/heroku.yml
build:
  docker:
    web: Dockerfile
EOF

go mod init heroku-demo

2. デプロイ

アプリ作成

## demo0013は任意のアプリ名に変更してください
heroku create demo0013

Herokuのリモートリポジトリ追加

heroku git:remote -a demo0013

サブディレクトリgo/でのデプロイ

git subtree push --prefix=go heroku main

3. 確認

heroku open
heroku logs --tail

以下のようなサイトになるはず
スクリーンショット 2024-12-04 23.49.06.png

おわりに

Heroku CLIとGitのsubtreeコマンドを使用することで、簡単にサブディレクトリもデプロイできます。
また、学生の場合はHerokuは無料枠が存在するのでおすすめです。
是非お試しください!!

3
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
3
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?