しばやん雑記

Azure とメイドさんが大好きなフリーランスのプログラマーのブログ

App Service on Linux の Docker Container が改善された話

何と大晦日に App Service on Linux がアップデートされたことが Twitter で流れていました。海の向こうでは正月休みとかいう概念は無いみたいですね。

Nazim 氏とはメールで何回もやり取りしましたが、めっちゃいい人でした。

xdebug 対応はまあいいとして、メインは overlapped recycling です。これまでイメージをアップデートすると、既存のコンテナを削除してから新しく起動していたようで、アップデート中は 500 を返していました。

適当に PHP で HOSTNAME を返すだけのコードを書いて、リクエストを投げて ID が切り替わるのを確認してみました。40x / 50x の時は例外になるので確認できます。

f:id:shiba-yan:20170102205536p:plain

ポータルからイメージを変えても、500 などを返すことなく ID が変わりました。環境変数 HOSTNAME で返ってくるのは、多分 Docker Container の ID です。

調べた範囲だと 1 サイトでの構成はこんな感じです。推測ですけど。

f:id:shiba-yan:20170102225111p:plain:w600

Antares Server は Apache で動いている ILB っぽいです。おそらく App Service チームの自作。そして App と Kudu の IP アドレスは不定なので、使わないようにしましょう。

172.17.0.1 の素性は curl から叩いてみると簡単にわかります。

f:id:shiba-yan:20170102230638p:plain

単純な LB だけではなく、もっといろいろな機能が実装されている感じがします。

ちなみに App Service on Linux で使われている Mono で動作する Kudu やビルトインイメージの Dockerfile などが GitHub で公開されています。

今は /home のマウントがカスタムイメージの時だけ狂うバグがあるので、ここの Dockerfile をそのまま使っても動かすことはできないです。バグとしては認識されているので多分直ります。

バグが直ればカスタムランタイムをもっと柔軟に作れるようになるので待ってます。