きなこもち.net

.NET Framework × UiPath,Orchestrator × Azure × AWS × Angularなどの忘備録

Visual Studio × Web アプリケーション × Dockerに配置してみる (その1)

Dockerのことはじめとして、「DockerでIISを立てて、そのIISにWEBアプリケーションを配置」をしてみようと思います。

まず、配置するアプリケーションを作成してみます。
中身はないものでよいので、テンプレートをそのまま利用します。
(テンプレートアプリの作るところは省略します。)

次に、IISのイメージを用意します。
以下のサイトを参考にIISのイメージを取得していきます。
https://hub.docker.com/r/microsoft/iis/

上記のサイトにDockerfileのコードも記載されているので、それをベースに進めていこうと思います。
何が書かれているかはわかっていませんW



記載されていたコードは以下の通りです。

FROM microsoft/windowsservercore:1709
RUN powershell -Command Add-WindowsFeature Web-Server
ADD ServiceMonitor.exe /ServiceMonitor.exe
EXPOSE 80
ENTRYPOINT ["C:\\ServiceMonitor.exe", "w3svc"]

内容がわからないので、1行ずつ見ていきます。

1行目:FROM microsoft/windowsservercore:1709

FROM <イメージ>

こう記述することで、<イメージ>で指定したイメージを取得します。
ここで指定したイメージをそのあとの処理で使っていくみたいです。
つまりは、今回作成するコンテナのベースイメージですね。
Dockerfileの初めには、Fromから始めるというルールがあるようです。
今回は、Windows Server のServer Core のイメージを利用します。

2行目:RUN powershell -Command Add-WindowsFeature Web-Server

RUN ["実行バイナリ", "パラメータ1", "パラメータ2"] 

とすることで、コンテナ内で?指定した実行バイナリを動かすことができるみたいです。
今回は、Powershellで、WebServerの機能を有効化するコマンドを実行しています。

3行目:ADD ServiceMonitor.exe /ServiceMonitor.exe

ADD <ソース>... <送信先>

Addコマンドでは、 <ソース> にある新しいファイルやディレクトリをコピーし、コンテナ内のファイルシステム上にある <送信先> に指定されたパスに追加します。
今回は、ServiceMonitor.exeをコンテナ内のカレントディレクトリにコピーしているようです。
ServiceMonitor.exe・・・ってあったっけ( ^ω^)・・・

4行目:EXPOSE 80

EXPOSE <port> [<port>...]

長かったので、引用します。

EXPOSE コマンドは、特定のネットワーク・ポートをコンテナが実行時にリッスンすることを Docker に伝えます。
EXPOSE があっても、これだけではホストからコンテナにアクセスできるようにしません。
アクセスするには、 -p フラグを使ってポートの公開範囲を指定するか、 -P フラグで全ての露出ポートを公開する必要があります。
外部への公開時は他のポート番号も利用可能です。

pフラグというものがよくわかっていません。勉強不足・・・
とりあえず今は、runコマンドでコンテナを実行するときに指定するものと認識しています。


5行目:ENTRYPOINT ["C:\\ServiceMonitor.exe", "w3svc"]

ENTRYPOINT ["実行可能なもの", "パラメータ1", "パラメータ2"] ( exec 形式、推奨)

ENTRYPOINT はコンテナが実行するファイルを設定するコマンドの様です。
このコマンドは動きがイメージできていませんが、うごかしたらわかるかな・・・w

ということで、内容もある程度分かってきたので実行して見たいと思います。


・・・10分後

問題なく動きませんでしたw
原因調査は「その2」で行おうと思います(´・ω・`)