Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Web App for Containers + Cosmos DBで コンテナ対応したMEANアプリを作ろう!

194 views

Published on

Slides for Azure Webinar: Containerized MEAN App on Azure PaaS

Web App for Containers は、アプリスタックのホストに Docker コンテナーを使用するため皆さんが今Linux上で利用しているOSSベースのアプリもアプリスタックごとDockerコンテナ化することでそのまま Web App for Containersで利用することができます。
本ウェビナーでは簡単なMEANスタックアプリを題材に、アプリをコンテナ化し Web App for Containersにデプロイするまでの一連の流れを解説します。
MEANスタックのMongoDB部分についてはAzure Cosmos DBのMongo APIを利用して完全マネージドな構成を実現します。

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Web App for Containers + Cosmos DBで コンテナ対応したMEANアプリを作ろう!

  1. 1. Slides for Azure Webinar: Containerized MEAN App on Azure PaaS
  2. 2. コンテナを使うメリット
  3. 3. 出荷管理 決済システム 認証 在庫管理 ロギング ユーティリティ
  4. 4. AzureでDocker実行プラットフォーム ACS Engine (OSS) AKS/ACS Web App for Containers 生産性 Azure Container Instance (ACI) 仮想マシンベース
  5. 5. 簡易Todo入力ツール(MEANスタックで構築)をWeb App for Containerにデ プロイ。CRUDのためのデータベースはCosmos DB (Mongo API)。
  6. 6. Web App for Containers App Servicesの基盤の上で 独自Dockerコンテナを動かす ことができるサービス
  7. 7. App Serviceを使う理由? 2017年9月正式リリース
  8. 8. Linuxベースアプリ用 2種類のWeb Appの選択肢
  9. 9. 1. Web App for Containers イメージのソース  Azure Container Registry  Docker Hub  プライベートレジストリ
  10. 10. 2. Web Appでビルトインイメージ指定 https://github.com/azure-app-service
  11. 11. Azure Cosmos DB プラネットスケールの NoSQLサービス基盤
  12. 12. グローバル分散 マルチモデル + マルチAPI 保証された 低レイテンシ 弾力性のある スケールアウト 豊富な一貫性レベル フルマネージドの 包括的SLA Azure Cosmos DB 読み取り10ミリ秒以下、 書き込み15ミリ秒以下 ストレージとスループット両面で スケールアウト可能 全リージョンで利用可能 複数リージョン間自動レプレイケーション 手動/自動フェールオバー
  13. 13. TCP (SSL), HTTPS Cosmos DB Database Engine SQL JavaScript MongoDB Tables Gremlin Cassandra Query IL Database Runtime HBase … KEY-VALUE COLUMN-FAMILY DOCUMENT GRAPH
  14. 14. Web App for Containers VM VM VM VM ① ② ③ アプリのDockerコンテナ化 Azure PaaSでフルマネージド化 Container Express Angular Node.js Express Angular Node.js MongoDB MongoDB Container Express Angular Node.js Cosmos DB ( Mongo API ) Cosmos DB ( Mongo API )
  15. 15. フルマネージド化対応までの流れ
  16. 16. セミナーマテリアル 本ウェビナーの説明で使用する設定ファイルや手順は全て Githubにアップしております。ご自分の環境でお試しになりたい方 は下記レポジトリよりgit clone/ダウンロードしてお使いください。 マテリアル取得 git clone https://github.com/yokawasa/azure-containers-mean-stack-demo.git 手順書/チュートリアル https://github.com/yokawasa/azure-containers-mean-stack- demo/blob/master/docs/tutorial-webapp-containers-and-cosmosdb.md
  17. 17. アプリのDockerコンテナ化 Best practices for writing Dockerfiles https://docs.docker.com/engine/userguide/eng-image/dockerfile_best-practices/ FROM python:3.4-alpine ADD . /code WORKDIR /code RUN pip install -r requirements.txt CMD ["python", "app.py"] サンプルDockerfile (Pythonアプリapp.pyの環境)
  18. 18. Web App用カスタムコンテナのための 設定ポイント https://blogs.msdn.microsoft.com/waws/2017/09/08/things-you-should-know-web-apps-and-linux/ 1. パラメータは環境変数から読み込むように設定 DB接続先やアプリ内の可変パラメータなど 2. 外部公開用ポートの自動バインド 外部公開可能なポートは1つのみ。ポートは自動で検知されコンテナにバインドされる。 WEBSITES_PORT環境変数で明示的に指定可 3. SSHの設定 Azureポータル内のクライアントからのみコンテナイメージにSSHログインが可能。rootユーザー パスワードは“Docker!”, ポートは2222 https://docs.microsoft.com/en-us/azure/app-service/containers/app-service-linux-ssh-support 4. 永続化データと/homeディレクトリ WEBSITES_ENABLE_APP_SERVICE_STORAGEをtrueにすることで/homeディレクトリは ストレージにマウントされる
  19. 19. MEANアプリ コンテナイメージのDockerfile https://github.com/yokawasa/azure-containers-mean-stack- demo/blob/master/dockerfiles/Dockerfile Web AppへのSSHログインのための設定
  20. 20. アプリのコンテナイメージ化と実行 コンテナをビルドする (image_name:tag=mean-demo:0.0.1) コンテナをローカルで走らせてテスト (アプリはhttp://localhost:8080でアクセス) ※ 環境変数 MONGODB_URI例 MONGODB_URI="mongodb://<accountname>:<accountkey>@<accountname>.documents.azure.com:10255/<database>? ssl=true&sslverifycertificate=false” MONGODB_URI="mongodb://<mongodb_ip>:27017/mean"
  21. 21. Cosmos DB アカウント+DBの作成 Cosmos DB アカウント作成 az cosmosdb create --name $ACCOUNT_NAME --kind MongoDB --resource-group $RESOURCE_GROUP az cosmosdb database create --name $ACCOUNT_NAME --db-name $DATABASE_NAME --resource-group $RESOURCE_GROUP データベースの作成
  22. 22. Cosmos DB接続 URIの取得 マスターキーの取得 az cosmosdb list-keys --name $ACCOUNT_NAME --resource-group $RESOURCE_GROUP --query "primaryMasterKey" mongodb://<cosmosdb-name>:<primary_master_key>@<cosmosdb- name>.documents.azure.com:10255/<database-name>?ssl=true&sslverifycertificate=false 下記の<cosmosdb-name>、<primary_master_key>、<database-name>を正しい値に置換し てCosmos DB接続URIを取得
  23. 23. テスト実行 mongodb://<cosmosdb-name>:<primary_master_key>@<cosmosdb- name>.documents.azure.com:10255/<database- name>?ssl=true&sslverifycertificate=false
  24. 24. Docker HubにイメージをPUSH Docker HubにPUSH (image-name:tag=mean-demo:0.0.1) Docker Hubにイメージが PUSHされていることを確認 <dockerhub-user>/<imagename>:<tag> 例) yoichikawasaki/mean-demo:0.0.1
  25. 25. 最も単純なデプロイメントの流れ Local PC Container Registry • 開発、ビルド、テスト • コンテナイメージ作成 コンテナイメージを Registryにプッシュ Web Appが コンテナイメーを Registryからプル https://hub.docker.com/ deployment slot • dev • Staging • production
  26. 26. AzureでのCI/CDオプション https://docs.microsoft.com/en-us/azure/app-service/containers/app-service-linux-ci-cd
  27. 27. デプロイメントサイクルとCI/CD Commits code Build/CI CD pipelineContainer Registry commits code Build/CI CD pipelineAzure Container Registry Code Repository Build + Testing Release Commits code Build/CI CD pipelineContainer Registry
  28. 28. https://docs.microsoft.com/ja-jp/azure/app-service/containers/tutorial-custom-docker-image https://docs.microsoft.com/en-us/azure/jenkins/deploy-jenkins-app-service-plugin#configure- jenkins-to-deploy-web-app-for-containers https://azure.microsoft.com/en- us/blog/annoucing-jenkins-deploy-to-azure-app-service-plugin-and-new-managed-disk-support- for-azure-storage-plugin/ https://docs.microsoft.com/ja-jp/vsts/build-release/apps/cd/deploy-docker-webapp

×