(有料になったが) Heroku CLI を使ってコマンドラインから Heroku を操作

Bash

はじめに

今更ながら、 Heroku CLI を使う必要が出てきたので開発環境を整備しはじめました。
Heroku の操作をいつものコマンドラインから行いたいと思い、CLI ツールを導入することにしました。

ちなみに、話題になりだしてからもほぼ触ることが有りませんでしたが、いつの間にか無料プランが無くなってしまったんですね。

検証環境

$ uname -moi
arm64 unknown Darwin

$ bash -version | head -n 1
GNU bash, バージョン 5.2.15(1)-release (aarch64-apple-darwin22.1.0)

インストールに必要なもの

  • Git

多くのエンジニアの開発環境には導入済みでしょう。

インストール

Mac 環境 の場合には、 みんな大好き Homebrew を使用するのがかんたんです。

$ brew tap heroku/brew && brew install heroku

Windows 環境の場合にはインストーラーが提供されています。

その他の環境、例えば Linux 環境向けに tar 形式の実行ファイルや apt-get で導入できるものも提供されています。

動作確認

$ heroku --version
heroku/7.68.0 darwin-x64 node-v14.19.0

ログイン

まずはログインを行います。

heroku login コマンドを実行します。

実行後、キーを押すように求められ、押すとブラウザが起動します。
Heroku へのログインすれば、操作は終了です。

事前に Heroku のアカウントは作成しておきましょう

( 表示されている URL は、秘匿情報のため実際のものを書き換えています。 )

$ heroku login
heroku: Press any key to open up the browser to login or q to exit:
Opening browser to https://cli-auth.heroku.com/auth/cli/browser/*************************************************************************************************************************************************
Logging in... done
Logged in as genzouw@gmail.com

ブラウザが利用できないような環境の場合には、 heroku login -i コマンドを使ってターミナル上だけでログイン操作を完結できます。

heroku login が成功すると ~/.netrc ファイルにドメイン、メールアドレス、API トークンの情報が追記されます。

こちらも秘匿情報のため実際のもの ( password の部分 ) を書き換えています

$ cat ~/.netrc
machine api.heroku.com
  login genzouw@gmail.com
  password ************************************
machine git.heroku.com
  login genzouw@gmail.com
  password ************************************

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

ここまでくれば、 Heroku のアプリケーション作成の準備ができています。
作成してみます。

$ mkdir my_heroku_app/

$ cd my_heroku_app

$ heroku create
Creating app... done, ⬢ floating-plains-37622
https://floating-plains-37622.herokuapp.com/ | https://git.heroku.com/floating-plains-37622.git

出力された 2 つの URL のうち、前者 ( https://floating-plains-37622.herokuapp.com/ ) にアクセスすると、ページが表示されます。
ただし、まだアプリケーションコードは用意していないため、そっけないページしか表示されません。

後者の URL ( https://git.heroku.com/floating-plains-37622.git ) はこの後利用するためメモしておきます。

Heroku アプリケーションの変更

簡単な PHP のページを用意してみました。

  • ブラウザでアクセスされたら文字を表示します。
  • name というクエリ文字列が URL に含まれていた場合にはそれも一緒に表示します。

お好きなエディタで作成したら、中身に間違いがないか確認しておきます。

$ cat index.php
<?php

echo "Hello " . htmlspecialchars($_GET["name"]) . "!";;

用意できたら、ディレクトリに Git ワークスペースを作成し、リモートリポジトリと紐付けます。

# git init を実行し、Git ワークスペースを作成
$ git init
Initialized empty Git repository in /Users/genzouw/my_heroku_app/.git/

# リモートリポジトリ origin として先程ターミナルに表示されていた Git リポジトリのURLをセット
$ git remote add origin https://git.heroku.com/floating-plains-37622.git

作成した index.php ファイルを git addgit commit した後、Git リモートリポジトリへプッシュします。

$ git add .

$ git commit -m "first commit."

$ git push origin --force-with-lease
...(省略)...
remote: -----> Compressing...
remote:        Done: 15.9M
remote: -----> Launching...
remote:        Released v5
remote:        https://floating-plains-37622.herokuapp.com/ deployed to Heroku
remote:
remote: Verifying deploy... done.
To https://git.heroku.com/floating-plains-37622.git
 + 03c2f63...d6b0aa8 main -> main (forced update)

先程のページにアクセスすると、作成した index.php が動作しているはずです。

  • パラメータあり : https://floating-plains-37622.herokuapp.com/
  • パラメータなし : https://floating-plains-37622.herokuapp.com/?name=genzouw

Heroku アプリケーションの削除

Heroku アプリケーションの作成、変更ができました。

不要になったので作成したアプリケーションを削除します。

$ heroku apps:destroy
 ▸    WARNING: This will delete ⬢ floating-plains-37622 including all add-ons.
 ▸    To proceed, type floating-plains-37622 or re-run this command with --confirm floating-plains-37622

> floating-plains-37622
Destroying ⬢ floating-plains-37622 (including all add-ons)... done

削除まで簡単にできました。

ひとこと

初学者の方々のプログラミング相談を受けることがありましたが、多くの方が Heroku で環境構築をされていました。
人気があったのに無料プランがなくなってしまったのは残念ですね。

Bash