今回は チュートリアル:Azure Kubernetes Service (AKS) 用のアプリケーションの準備 の深堀をしていきます。
手順通りアプリの取得と実行
まずはドキュメント通りにアプリを取得して実行してみます。
1. git clone でソースコードを取得。
git clone https://github.com/Azure-Samples/azure-voting-app-redis.git
cd azure-voting-app-redis
2. docker-compose でイメージの実行。
docker-compose up -d
3. ブラウザで http://localhost:8080 にアクセス。投票アプリが起動することを確認。
4. 確認が完了したらコンテナを終了。
docker-compose down
詳細の確認
今回は、今後作成する AKS に展開するためのアプリケーションをまずローカルにダウンロードして動かしてみるところまでの手順となっています。早速詳細を見ていきましょう。
アプリケーションの中身
ダウンロードした投票アプリは、Web フロントエンドとなる Python アプリとバックエンドとなる Redis で構成されています。
docker-compose
複数のコンテナからなるアプリケーションのビルドや実行に docker-compose が使えます。手順 2 で指定しているファイルの中身を見てみましょう。
- services: 起動するコンテナ。ここでは 2 つのイメージを指定。
- azure-vote-back: image として redis を指定しポート 6379 (Redis の既定) を開放。
- azure-vote-front: build で azure-vote フォルダを指定しているため、azure-vote をビルドした結果をイメージとして利用。ポートはローカルの 8080 をコンテナの 80 にマップして開放し、REDIS 環境変数として azure-vote-back を指定
version: '3'
services:
azure-vote-back:
image: redis
container_name: azure-vote-back
ports:
- "6379:6379"
azure-vote-front:
build: ./azure-vote
image: azure-vote-front
container_name: azure-vote-front
environment:
REDIS: azure-vote-back
ports:
- "8080:80"
また docker-compose up
の引数である -d
はコンテナをバックグラウンド実行するパラメーターです。
azure-vote
azure-vote フォルダの Dockerfile は以下の通り。
- ベースイメージとして python 3.6 の uwsgi-nginx-flast を指定
- pip install でイメージに redis をインストール
- azure-vote フォルダをイメージの app フォルダに追加
FROM tiangolo/uwsgi-nginx-flask:python3.6
RUN pip install redis
ADD /azure-vote /app
azure-vote フォルダ内は、以下の構成。
- static フォルダ: CSS ファイルを保持
- templates フォルダ: 画面となる index.html を保持
- config_file.cfg: ボタンの名前やタイトルなど変数を保持
- main.py: メインの python ファイル
アプリの動作については main.py を参照。基本的にはクリックしたボタンに応じて Redis の値を増加させているだけです。
実行状態の確認
docker の各種コマンドを使って、現在の状況が確認可能です。docker においてイメージはダウンロードしたファイルであり、コンテナはイメージをインスタンス化したものであり、実行中のアプリケーションとなります。
1. 現在ローカルにあるイメージの確認。
- docker images は docker image list のショートカットでイメージの一覧を表示
- 結果から redis と、azure-vote-front、および azure-vote-front のベースとなっている tiangolo/uwsgi-nginx-flask を確認。
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
azure-vote-front latest f1056b864e11 2 hours ago 965MB
redis latest 63130206b0fa 10 days ago 98.2MB
tiangolo/uwsgi-nginx-flask python3.6 b3b62e990e26 6 weeks ago 964MB
2. 現在実行中のコンテナの確認。
- docker ps は docker container list のショートカットでコンテナの一覧を表示
- 結果より azure-vote-front と redis が起動しているこを確認。
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e1db9be575b9 redis "docker-entrypoint.s…" 2 hours ago Up 2 hours 0.0.0.0:6379->6379/tcp azure-vote-back
5eb8632668ae azure-vote-front "/entrypoint.sh /sta…" 2 hours ago Up 2 hours 443/tcp, 0.0.0.0:8080->80/tcp azure-vote-front
3. azure-vote-front の起動のコマンドを "Entrypoint" より確認。azure-vote の Dockerfile では Entrypoint は指定していないので、実際はベースイメージのものと同様。
- docker inspect: イメージの詳細を確認可能
docker inspect azure-vote-front
"Entrypoint": [
"/entrypoint.sh"
],
4. entrypoint.sh の中身を確認。
- docker exec でコンテナにアタッチして bash を実行
- cat でファイルの中身を表示
- nginx が起動されるスクリプトであることを確認
docker exec -it 5eb8632668ae "/bin/bash"
root@5eb8632668ae:/app# cat /entrypoint.sh
まとめ
今回はチュートリアルで使うダウンロードしたアプリの中身を見ていきました。次回はコンテナレジストリについてみていきます。