0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

AKS を使いこなす : チュートリアルの深堀り - アプリケーションの準備

Last updated at Posted at 2019-09-24

今回は チュートリアル: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

まとめ

今回はチュートリアルで使うダウンロードしたアプリの中身を見ていきました。次回はコンテナレジストリについてみていきます。

次の記事へ
目次に戻る

参照

Docker
Getting Started with Docker Desktop for Windows

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?