LoginSignup
4

More than 1 year has passed since last update.

posted at

updated at

Herokuでコンテナデプロイを試した

はじめに

HerokuでDockerイメージをデプロイ出来るということで試してみたのでササッと手順をまとめます。
今回はGoで試しましたが、Dockerコンテナで動いていれば汎用的に使える手順だと思います。

環境

terminal
$ brew -v
Homebrew 3.2.3
$ docker -v
Docker version 20.10.7, build f0df350

事前準備

Dockerfileを記述して、アプリケーションが動作する環境を作成してください。
なお、Herokuではポート番号を環境変数から取得する必要があり、注意が必要です。
詳細は以下に記述しています。

Herokuではポート番号を環境変数から取得する必要がある - Qiita

手順

デプロイまでの手順を書いていきます。参考にしたページも随時貼っていきます。

Herokuのアカウントを作る

持っていない人は作りましょう。
https://id.heroku.com/login

Heroku CLIを入れる

brewでインストールする。

terminal
$ brew tap heroku/brew && brew install heroku

インストール出来ていることを確認する。

terminal
$ heroku -v
heroku/7.56.1 darwin-x64 node-v12.21.0

Heroku CLI | Heroku Dev Center ダウンロードおよびインストール

ログインする

CLIからHerokuにログインする。

terminal
$ heroku login
heroku: Press any key to open up the browser to login or q to exit: 
qOpening browser to https://cli-auth.heroku.com/auth/cli/browser/

...(省略)
以下、ログイン後

Logging in... done
Logged in as {MailAddress}

ブラウザで以下の画面が開かれるのでLog Inをクリックする。
Image

Container Registryにログインする。

terminal
$ heroku container:login
Login Succeeded

Heroku CLI | Heroku Dev Center はじめに

Herokuアプリの定義ファイルを書く

デプロイするサービスのルートディレクトリに記述する。今回は最低限書く。

heroku.yml
build:
   docker:
     web: Dockerfile

heroku.yml を使用して Docker イメージをビルドする | Heroku Dev Center はじめに

Heroku上にアプリを作成する

Heroku上にアプリを作る。heroku create {アプリ名}でアプリ名の指定も可能。
この時点でデプロイ先も作成される。

terminal
$ heroku create
Creating app... done, floating-*******-*******
https://floating-*******-*******.herokuapp.com/ | https://git.heroku.com/floating-*******-*******.git

スタックの設定をコンテナにする

terminal
$ heroku stack:set container
Setting stack to container... done

heroku.yml を使用して Docker イメージをビルドする | Heroku Dev Center はじめに

デプロイする

terminal
$ git push heroku master

デプロイされたものを確認する

デプロイされたものを確認します。

terminal
$ heroku open

想定されたレスポンスが返ってきたので成功です。
Image

最後に

これが無料で使えるのは最高ですね^^

参考

Docker によるデプロイ | Heroku Dev Center
heroku.ymlを使用したDockerイメージの構築| Heroku Dev Center

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
What you can do with signing up
4