Azure Container Instancesのコンテナーグループで世界最速WordPress!!

◆ Live配信スケジュール ◆
サイオステクノロジーでは、Microsoft MVPの武井による「わかりみの深いシリーズ」など、定期的なLive配信を行っています。
⇒ 詳細スケジュールはこちらから
⇒ 見逃してしまった方はYoutubeチャンネルをご覧ください
【5/21開催】Azure OpenAI ServiceによるRAG実装ガイドを公開しました
生成AIを活用したユースケースで最も一番熱いと言われているRAGの実装ガイドを公開しました。そのガイドの紹介をおこなうイベントです!!
https://tech-lab.connpass.com/event/315703/

こんにちは、サイオステクノロジー武井です。今回は、Azure Container Instancesのコンテナーグループを使って、世界最速でWordPress環境を作りますヮ(゚д゚)ォ!ちなみにWordPressは一例で、他にもたくさんの使い道があります。

Azure Container Instancesって?

Azureが提供するサーバーレスコンテナプラットフォームです。普通コンテナを使う場合は、Dockerを自分のPCなり、どこかのサーバーなりにインストールして、そこでイメージをpullなりbuildなりすると思います。

でも、そのサーバーさえ用意するのも手間ですし、サーバーを保守管理する手間も増えます。そこで、Azureにはコンテナをサーバーレスで動作できる環境があります。それがAzure Container Instancesです。AWSやGCPにも同様のものがあります。

コンテナを稼働させる実行基盤として、AzureにはWeb App for ContainersやAzure Kubernetes Serviceがあります。ただ、そちらは稼働させるまでに結構時間かかりますよね。Azure Container Instancesは、先の2つのような高機能はありません。Blue Green Deployもできませんし、高度なスケーリングもできません。単一もしくは複数のコンテナをサクッと動かすだけです。でもそれがまたいいところで、例えば、ローカルで動かしていたコンテナを他の人にもちょっと使わせてみたいとか、なにかのシステムの結合テストをするときに、そのアプリの結合テストの対象ではないけど、必要なOSSのサービスとかをサクッとAzure Container Instancesにデプロイするときがあります。

もっと具体的なケースで行くとシングルサインオンの対象のアプリをテストするとき、シングルサインオンのシステム自体はテスト対象ではないけど、全体の結合テストでは必須です。つまり本番リリース対象ではないけど、リリース対象のシステム稼働に必要な周辺システムにAzure Container Instancesを使ったりします。そんなものをVMやWeb App for ContainersやAzure Kubernetes Serviceで稼働させるのもめんどくさいですし(´・ω・`)

その他の用途としては、Kubernetesの仮想ノードとしてAzure Container Instancesが使われることもあります、Virtual Kubeletと呼ばれるモジュールからAzure Container InstancesのAPIを呼び出し、Kubernetesの仮想ノードを実現します。

コンテナグループ

Azure Container Instancesにはコンテナグループという機能があって、複数のコンテナをデプロイできます。これが激しく便利です。当然複数のコンテナ同士を通信させることもできるので、Web DBシステムみたいなも簡単にできます。

実践!!世界最速WordPress構築!!

では、Azure Container Instancesのコンテナグループを使ってWordPressを世界最速で構築したいと思います。もちろんその用途はWordPressだけではありません。皆様の創意工夫次第で用途は無限に広がります。なんとなくWordPressが解説のネタにしやすかっただけです^^;

前置きが長くなりましたが、早速実践してみましょう。まず、みんな大好きAzure Cloud Shellを起動してリソースグループを作成します。東日本リージョンにntakei_aci_wordpressというリソースグループを作ります。

$ az group create --name ntakei_aci_wordpress --location japaneast

 

次に先程作成したリソースグループに、myContainerGroupというコンテナグループを作成します。

$ az container create --resource-group ntakei_aci_wordpress --name myContainerGroup --output table

 

以下の内容のYAMLファイルを作成します。

apiVersion: 2018-10-01
# コンテナグループを作成するリージョンを指定します。
location: japaneast
# このファイルで作成するコンテナが所属するコンテナグループを指定します。
name: myContainerGroup
properties:
  containers:
  # コンテナ名を指定します。WordPressのコンテナです。
  - name: wordpress
    properties:
      # コンテナのイメージ名を指定します。
      image:  wordpress:php7.4-apache
      # コンテナのbuild時に渡す環境変数を指定します。WordPressの起動には
      # 最低限DBのホスト名、データベース名、ユーザー名、パスワードが必要になります。
      environmentVariables:
        - name: 'WORDPRESS_DB_HOST'
          value: '127.0.0.1:3306'
        - name: 'WORDPRESS_DB_NAME'
          value: 'wordpress'
        - name: 'WORDPRESS_DB_USER'
          value: 'wordpress'
        # secureValueを指定しておくとAzureポータルで非表示となります。
        - name: 'WORDPRESS_DB_PASSWORD'
          secureValue: 'wordpress'
      resources:
        requests:
          # コンテナに割り当てるCPUとメモリを指定します。
          cpu: 1
          memoryInGb: 1.5
      # このコンテナに対して開放するポートを指定します。
      ports:
      - port: 80
  # コンテナ名を指定します。WordPressが接続するDBのコンテナです。
  - name: db
    properties:
      # コンテナのイメージ名を指定します。
      image: mysql:8.0.20
      # コンテナのbuild時に渡す環境変数を指定します。MySQLを起動するために
      # 必要な環境変数諸々です。
      environmentVariables:
        - name: 'MYSQL_ROOT_PASSWORD'
          secureValue: 'wordpress'
        - name: 'MYSQL_DATABASE'
          value: 'wordpress'
        - name: 'MYSQL_USER'
          value: 'wordpress'
        # secureValueを指定しておくとAzureポータルで非表示となります。
        - name: 'MYSQL_PASSWORD'
          secureValue: 'wordpress'
      resources:
        requests:
          # コンテナに割り当てるCPUとメモリを指定します。
          cpu: 1
          memoryInGb: 1.5
      # このコンテナに対して開放するポートを指定します。
      ports:
      - protocol: tcp
        port: '3306'
  # OSのタイプを指定します。
  osType: Linux
  # IPアドレスのタイプを指定します。パブリックに公開したいので、Publicとつけます。
  # グローバルなIPアドレスが割り当てられます。
  ipAddress:
    type: Public
    # インターネットに対して公開したいポートとプロトコルを指定します。
    ports:
    - protocol: tcp
      port: '80'
    # 以下の値を指定すると[dnsNameLabel].[リージョン名].azurecontainer.ioという
    # FQDNが付与されます。
    dnsNameLabel: ntakei-wp
# 以下は決り文句です。(MS公式ドキュメントそのまんまです)
tags: null
type: Microsoft.ContainerInstance/containerGroups

※YAMLの公式リファレンスは以下になります。

https://docs.microsoft.com/ja-jp/azure/container-instances/container-instances-reference-yaml

 

先程作成したYAMLファイルをもとにコンテナを作成します。ちなみにコンテナを更新するときも、YAMLファイルを修正して以下のコマンドを実行します。

$ az container create --resource-group ntakei_aci_wordpress --file wp.yaml

 

これで準備は整いました。https://ntakei-wp.japaneast.azurecontainer.io/にアクセスしますと、WordPressのインストール画面が表示されるはずです。やったーヮ(゚д゚)ォ!

※実際に公開するときはHTTPSで通信経路を暗号化して下さいm(_ _)m

まとめ

いかがでしたか?超簡単でしたよね。あっという間にWordPressが出来上がっちゃいました。Azure Container Instancesを使って、是非あなたもステキなコンテナライフを満喫して下さい。No Azure Container Instances, No Life!!

アバター画像
About 武井 宜行 269 Articles
Microsoft MVP for Azure🌟「最新の技術を楽しくわかりやすく」をモットーにブログtech-lab.sios.jp)で情報を発信🎤得意分野はAzureによるクラウドネイティブな開発(Javaなど)💻「世界一わかりみの深いクラウドネイティブ on Azure」の動画を配信中📹 https://t.co/OMaJYb3pRN
ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

0人がこの投稿は役に立ったと言っています。


ご覧いただきありがとうございます。
ブログの最新情報はSNSでも発信しております。
ぜひTwitterのフォロー&Facebookページにいいねをお願い致します!



>> 雑誌等の執筆依頼を受付しております。
   ご希望の方はお気軽にお問い合わせください!

Be the first to comment

Leave a Reply

Your email address will not be published.


*


質問はこちら 閉じる