Azure Web Appsお勉強メモ(5)Azure Web AppsにてデプロイしたDockerイメージにSSH接続する

はじめに

先日からAzure Web AppsにRailsアプリを動かすことをやっています。昨日のエントリーでAzure Web Apps上でRailsアプリを動かす方法を記しました。

miyohide.hatenablog.com

無事、動かすことができたのですがデバッグなど何かとSSHができた方が嬉しいのでSSH接続する方法を記します。

昔「infrastructure as codeとかでマシンにSSHログインしたら負けと思え」と言われたことがあるのですが、あまり気にしないことにします。

これまでの内容は以下を参照してください。

参考となる資料

マイクロソフトが公開している以下のドキュメントに「SSHを有効にする」という記述があるのでこれを参考にします。

docs.microsoft.com

上記ドキュメントの記述内容はapkコマンドを使っていることからAlpine LinuxベースのDockerイメージを使ったものなので、バージョン番号しか書かれていなかったり、-slimとついているDockerイメージを使っている場合は若干コマンドが異なります。昨日のエントリーでの例もruby:3.0.2のDockerイメージを使っているので、上記のドキュメントから若干修正が必要となります。

設定

やるべきことは以下の5点です。

  • openssh-serverをインストールする
  • パスワードを変更する
  • SSH設定ファイル(sshd_config)を作成し、/etc/ssh/以下に格納する
  • SSHサーバーを起動する
  • ポート番号2222を開ける

一個ずつやっていきます。

openssh-serverをインストールする

Dockerfile内で以下の記述を追加するだけです。

RUN apt-get update && apt-get install -y openssh-server

パスワードを変更する

これはマイクロソフトが公開しているドキュメントに書いてあるコマンドをそのまま実行します。具体的にはDockerfile内で以下の記述を追加します。

RUN echo "root:Docker!" | chpasswd

SSH設定ファイル(sshd_config)を作成し、/etc/ssh/以下に格納する

これもマイクロソフトが公開しているドキュメントと同じようにDockerfileに記述します。プロジェクトのルートにsshd_configを作成し、中身をマイクロソフトが公開しているドキュメントからコピペ。Dockerfile内で以下の記述を追加します。

COPY sshd_config /etc/ssh/

SSHサーバーを起動する

Dockerfile内のENTRYPOINTで指定したシェルスクリプトentrypoint.shに以下の記述を追加します。

service ssh start

ポート番号2222を開ける

ポート番号2222をDockerfile内のEXPOSEに追記します。元々は

# 変更前
EXPOSE 3000

となっていたのを以下のようにするだけです。

# 変更後
EXPOSE 3000 2222

実行

ここまで設定できたら、あとはDockerイメージを作成してAzure Web Appsにデプロイします。デプロイが完了したら、Azureポータルから「開発ツール」の「SSH」から「移動」をクリックします。

f:id:miyohide:20210725163914p:plain

すると別のタブが開いて、SSH接続できます。

f:id:miyohide:20210725164124p:plain

Dockerイメージ内に入っているだけなので、ディレクトリ構成もDockerイメージと同じです。

f:id:miyohide:20210725164329p:plain