まだまだプレビュー中の Web App On Linux ですが、内部的にはDockerコンテナが採用されています。
ビルトインのランタイムを選ぶと、Webサーバには apache が設定されたコンテナが起動しますが、nginx で動かすこともできるので試してみました。
Dockerコンテナ作成
まず、nginxが動作するコンテナが必要なので、作成してDocker Hubに登録します。
未登録の場合は Docker Hub にサインアップしておきます。
作成したアカウントでログインしておきます。
$ docker login
Username:
Password:
今回は起動を試してみるだけなのでpublicのnginxイメージを使用します。
$ docker image ls nginx
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 958a7ae9e569 2 weeks ago 109MB
そのままnginxtestという名称で起動します。初回はpullしてくるので少し時間がかかります。
$ docker run --name nginxtest -p 8001:80 -d nginx
Unable to find image 'nginx:latest' locally
latest: Pulling from library/nginx
※略※
Digest: sha256:41ad9967ea448d7c2b203c699b429abe1ed5af331cd92533900c6d77490e0268
Status: Downloaded newer image for nginx:latest
5ae9cxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxfccc5d
docker psコマンドで起動したことを確認します。
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5ae9cxxxxxxx nginx "nginx -g 'daemon ..." 6 minutes ago Up 6 minutes 0.0.0.0:8001->80/tcp nginxtest
これをそのまま実行してもいいのですが、動作確認用に少しだけ変更しておきます。vimがインストールされていなかったのでインストールし、index.htmlを少し編集します。
$ docker exec -it nginxtest /bin/bash
root@5ae9c05b31fd:/# apt-get install vim
※略※
root@5ae9c05b31fd:/# vim /usr/share/nginx/html/index.html
変更したイメージをDocker Hubにpushします。
$ docker stop nginxtest
nginxtest
$ docker commit -m "hello world" nginxtest nakatsukasa/nginxtest
sha256:d110e08xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
$ docker push nakatsukasa/nginxtest
The push refers to a repository [docker.io/nakatsukasa/nginxtest]
c0e8abf3a3bd: Pushed
※略※
latest: digest: sha256:d110e08xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx size: 1160
Web App On Linux作成
ポータルで新規 -> 「Web App On Linux (プレビュー)」からWebAppを作成します。
「イメージのソース」で"Docker Hub"を選び、pushしたタグを指定します。
動作確認
作成したWebAppにブラウザでアクセスすれば、変更したindex.htmlが表示されることを確認できます(スクリーンショットが上と一緒ですが...)。
以上で nginx コンテナが実行できることが確認できました。
注意事項
- 今回はDocker Hubのpublicリポジトリで試しましたが、外部公開しないものはprivateリポジトリを使用して下さい。
- WebAppのアクセス制限(windows版ではweb.config)は、nginx側での対応が必要です。nginx.confファイルに設定を追加して下さい。
- 実利用の(テスト用途ではない)WebAppでは、永続化のためリンクを張る必要があります。参考資料の13ページを参照して下さい。