アプリケーションのウェブターミナルを使用し、アプリケーションのウェブプロセスが実行されているコンテナにコマンドラインでアクセスすることができます。ウェブターミナルを使用すると、スクリプトの実行ファイルの読み込みが行えます。問題のデバッグやパフォーマンスの監視、あるいは手動でのスクリプトアドホック実行の際に便利です。

ウェブターミナルを利用するには、以下の条件を満たす必要があります。

  • アプリケーションのデプロイに少なくとも 1 回成功していること
  • アプリケーションが正常に動作していること(エラーがある場合、またはアプリケーションが停止している場合、ウェブターミナルは使用できません)
  • 少なくとも1つの有効なIPアドレスを許可リストで指定すること

現在、ウェブターミナルからアクセスできるプロセスはウェブプロセスのみです。バックグラウンドプロセスやcronジョブはウェブターミナルでは利用できませんのでご注意ください。

Dockerfileとウェブターミナルの併用

アプリケーションがDockerfileで作成されている場合、Bashがコンテナにインストールされていることを確認してください。ほとんどの場合、ベースイメージ(Ubuntuなど)にシェルパッケージが含まれており、デフォルトで動作する状態です。合理化されたコンテナでは、シェルパッケージが含まれていない場合があり、その際には別途追加が必要になります。シェルパッケージの追加方法は、ベースイメージにより決まります。

  • Alpine:apk add bash
  • Ubuntu/Debian:apt install bash
  • Fedora:dnf install bash

認証のセットアップ

許可リストに追加するIPアドレスは一意でなければなりません。すでに許可リストにあるIPアドレスを追加しようとすると、エラーが表示されます。IPアドレスの重複追加はできません。

IPアドレスの追加

MyKinstaでアプリケーションのウェブターミナルページに初めてアクセスしたときは、「認証を設定する」をクリックしてIPアドレスを許可リストに追加します。接続元のアドレスを確認するには、「Test your IPv6」などのツールを使用可能です。

許可する最初のIPアドレスを入力してください。さらに IPアドレスを追加するには、「追加項目を増やす」をクリックします。許可するIPアドレスをすべて入力したら、「認証を設定する」をクリックしてください。

IP許可リストにIPアドレスを追加して、ウェブターミナルの認証を設定する
IP許可リストにIPアドレスを追加して、ウェブターミナルの認証を設定する

今後さらに IPアドレスを追加する必要がある場合は、ウェブターミナルページの許可リストのセクションで「IPアドレスを追加」をクリックします。

IPアドレスの削除

許可リストからIPアドレスを削除するには、削除するIPアドレスの横にある削除(ゴミ箱)アイコンをクリックし、「IPアドレスを削除」をクリックして削除を確定します。

ウェブターミナルの起動と開始

ウェブターミナルを開くには、まずウェブターミナルに接続する必要があります。「ウェブターミナルを開始」をクリックして接続を開始します。接続の間、ウェブターミナルページのオプションは無効になります。

ウェブターミナル接続中は、ウェブターミナルページのオプションが無効になる
ウェブターミナル接続中は、ウェブターミナルページのオプションが無効になる

ウェブターミナルポッドのデプロイが完了すると、IP許可リストの上に「ウェブターミナルが稼働しています」と表示されます。「ウェブターミナルを開く」をクリックすると、ブラウザの新しいタブでウェブターミナルが開きます。

ウェブターミナルを開く
ウェブターミナルを開く

ターミナルの読み込み中に、ウェブターミナルの開始ページが表示されることがあります。ターミナルの読み込みが完了したら、通常のターミナルのようにコマンドを実行できます。使用できるコマンドは、アプリケーションに存在する実行可能ファイルによって異なります。

ターミナルのユーザー名

アプリケーションがビルドパック(「ビルド環境」のステップで「コンテナイメージを自動で設定」を選択)で作成された場合、ターミナルのユーザー名が「heroku」になることがあります。Kinstaでは、Herokuにより維持されているオープンソースプロジェクトであるビルドパックを使用し、リポジトリに基づきアプリケーションのコンテナを自動で決定、作成しています。

アプリケーションがDockerfileで作成された場合(「ビルド環境」ステップで「Dockerfileを使用してコンテナイメージを設定」を選択)、ターミナルのユーザー名は通常「root」になりますが、実際にはDockerfileがどのようにセットアップされているかによります。

ウェブターミナルの停止と終了

ターミナルでの作業が終わったら、ブラウザのタブを閉じウェブターミナルの接続を終了します。タブを閉じてもターミナルは停止しませんが、再びターミナルを開くには、「ウェブターミナルを開く」をクリックし、約30秒待ってからタブを更新してください。

ウェブターミナルを停止するには、「ウェブターミナルを停止」をクリックします。

ターミナルの実行中は、IP許可リストを編集できません。編集する必要がある場合は、ターミナルを停止し、許可リストに変更を加え、ターミナルを再度開いてください。

ウェブターミナルの接続が確立されたまま利用されていない場合には、24時間経過後に自動的にシャットダウンされます。

ビルドパックのバイナリディレクトリ

ビルドパックを使用してMyKinstaにアプリケーションを追加する場合、バイナリディレクトリがアプリケーション言語のデフォルトのバイナリディレクトリと異なる場合があります。次の表は、各ビルドパック言語で使用されるバイナリディレクトリを示したものです。

言語 ディレクトリ
Node.js /layers/heroku_nodejs-engine/dist/bin/node
Ruby /usr/bin/ruby
Python /usr/bin/python
Java /layers/heroku_jvm/openjdk/bin/java
Scala Scalaには、他のコンパイル言語のような特定のデフォルトバイナリパスがありません。Scalaプログラムをコンパイルすると、Java仮想マシン(JVM)上で動作するバイトコードが生成されます。

コンパイルしたScalaクラスは通常、コードのパッケージ構造を反映したディレクトリ構造に格納されます。これはJavaクラスの構成に似たものになります。デフォルトでは、Scalaソースファイルをコンパイルすると、コンパイルした.classファイルはソースコードと同じディレクトリ(パッケージ宣言に基づくサブディレクトリ構造内)に配置されます。

必要に応じて、ビルドパックの代わりにDockerfileを使用してScalaのランタイムツールをインストールすることができます。

PHP /workspace/.heroku/php/bin/
Go Goには、他のコンパイル言語のような特定のデフォルトのバイナリパスはありません。Goプログラムをコンパイルすると、デフォルトではソースコードと同じディレクトリにバイナリ実行ファイルが配置されます。

必要に応じて、ビルドパックの代わりにDockerfileを使用してGoのランタイムツールをインストールすることができます。

トラブルシューティング

  • ウェブターミナルを開く際、ターミナル画面の代わりに「Error 1016 – Origin DNS」ページが表示される場合、DNSの伝播に若干の遅れがあることが原因として考えられます。ターミナル画面が表示されるまで、1分待ってからページを更新してください。数分以上経っても問題が解決しない場合は、カスタマーサポートまでご連絡ください。
  • 403:ウェブターミナルを開いたときに「403: Forbidden」エラーが表示された場合は、IPアドレスが許可リストに含まれていないことを意味します。ウェブターミナルを停止し、IPアドレスを追加して、再度ウェブターミナルを起動してください。
  • 以下のERRO[0000] exec failedのようなエラーは、コンテナにシェルパッケージがないことを示しています。ウェブターミナルを実行するには、パッケージをコンテナに追加する必要があります。

    ERRO[0000] exec failed: container_linux.go:425: starting container process caused: exec: “bash”: executable file not found in $PATH
    command terminated with exit code 1

関連ドキュメント