skip to content
barorin&

HerokuのCLIとデプロイ|基本コマンドとSeleniumを動かす設定

/ 5 min read

Table of Contents

はじめに

Herokuは、gitでpushするだけでアプリを公開できるPaaSです。CLIの基本操作と、Seleniumを動かすときの設定をまとめました。

Heroku CLIの基本

Terminal window
# ログイン・ログアウト
$ heroku login
$ heroku logout
# CLIの更新
$ heroku update

デプロイまでの流れ

Terminal window
# プロジェクトのディレクトリへ移動
$ cd project-folder
# gitリポジトリを初期化
$ git init
# Herokuのリモートを登録
$ heroku git:remote -a project-name
# コミットしてpush
$ git add .
$ git commit -m "コメント"
$ git push heroku main

**pushした時点でビルドとデプロイが走ります。**通常のgitリモートと同じ感覚で扱えるのがHerokuの分かりやすいところです。

その他のコマンド

Terminal window
# Herokuの環境でPythonを実行する
$ heroku run python hoge.py
# ログを見る
$ heroku logs --tail
# 環境変数を設定する
$ heroku config:set KEY=value

heroku logs --tail は、デプロイが失敗したときに最初に見るコマンドです。

SeleniumをHerokuで動かす

Herokuの実行環境にはChromeが入っていないため、buildpackで追加する必要があります。

buildpackを追加する

アプリの Settings から、次の2つを追加します。

https://github.com/heroku/heroku-buildpack-google-chrome.git
https://github.com/heroku/heroku-buildpack-chromedriver.git

CLIからでも追加できます。

Terminal window
$ heroku buildpacks:add heroku/google-chrome
$ heroku buildpacks:add heroku/chromedriver

コード側の設定

Chromeの実行ファイルの場所を指定し、ヘッドレスモードで動かします。

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
options = Options()
options.binary_location = "/app/.apt/usr/bin/google-chrome"
options.add_argument("--headless")
options.add_argument("--disable-gpu")
driver = webdriver.Chrome(options=options)

サーバー環境では、次のオプションも足しておくと安定します。

options.add_argument("--no-sandbox")
options.add_argument("--disable-dev-shm-usage")

--disable-dev-shm-usage は、共有メモリが小さいコンテナ環境でクラッシュするのを防ぐ指定です。

おわりに

Herokuは、gitでpushするだけという手軽さが利点でした。無料プランが無くなった今も、その扱いやすさは変わりません。

Seleniumを動かす場合は、buildpackの追加ヘッドレスの指定の2つを押さえておけば、あとはローカルと同じコードで動きます。

この記事を書いた人

barorinのプロフィール画像

barorin公認会計士

会計とITの二足のわらじで働く公認会計士です。Pythonを中心に、会計・監査の実務で実際に使っているコードや、Ubuntu・Raspberry Piの設定メモを書いています。