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 1 year has passed since last update.

Azure App Service で WordPress と MySQL のマルチコンテナーを試してみた

Posted at

Azure で WordPress の検証環境を用意する場合、Azure Database for MySQL を用意して VNET 統合したり、維持するのにそれなりの利用料金が発生したりするので、Terraform で簡単に作っては削除してを繰り返していました。インフラ構成を検証するのではなく、単に WordPress の機能検証を Azure App Service 上で行い、数日間その環境を維持したい場合、もっと安くできなかと思っていました。そこで MySQL もコンテナーで動かしたら良いのではと思い立ち、実際に Azure App Service で WordPress と MySQL のマルチコンテナーを試してみました。

ローカルで Docker Compose を試す

appservice-docker-wordpress.yml
version: '3.3'
services:
    db:
        image: mysql:8.0.35
        volumes:
            - db:/var/lib/mysql
        restart: always
        environment:
            MYSQL_ROOT_PASSWORD: somewordpress
            MYSQL_DATABASE: wordpress
            MYSQL_USER: wordpress
            MYSQL_PASSWORD: wordpress
    wordpress:
        depends_on:
            - db
        image: wordpress:latest
        volumes:
            - wordpress:/var/www/html
        ports:
            - "8000:80"
        restart: always
        environment:
            WORDPRESS_DB_HOST: db:3306
            WORDPRESS_DB_USER: wordpress
            WORDPRESS_DB_PASSWORD: wordpress
volumes:
    db:
    wordpress:
bash
# ローカルで WordPress + MySQL の動作検証
docker compose -f appservice-docker-wordpress.yml up -d

# ローカルで WordPress + MySQL を停止
docker compose -f appservice-docker-wordpress.yml down

# 再起動後も WordPress + MySQL が動作するか検証
docker compose -f appservice-docker-wordpress.yml up -d

# ボリュームも削除して検証終了
docker compose -f appservice-docker-wordpress.yml down --volumes

Azure App Service 検証環境を構築

bash
# 環境変数にセット
prefix=mnrdwp
region=japaneast

# リソースグループを作成
az group create \
  --name ${prefix}-rg \
  --location $region

# App Service Plan を作成
az appservice plan create \
  --name ${prefix}-plan \
  --resource-group ${prefix}-rg \
  --sku B1 \
  --is-linux

# Web App for Container の Compose 版を作成
az webapp create \
  --name ${prefix}-app \
  --resource-group ${prefix}-rg \
  --plan ${prefix}-plan \
  --multicontainer-config-type compose \
  --multicontainer-config-file appservice-docker-wordpress.yml

# 「常時接続」をオンに設定
az webapp config set \
  --name ${prefix}-app \
  --resource-group ${prefix}-rg \
  --always-on true

検証環境の作成直後の様子

コンテナーが Web App にダウンロードされた直後の最初のアクセス時は Error establishing a database connection が表示されました。

appservice-docker-wordpress-01.png

1 分後くらいにアクセスすると、DB の準備が整ったのか、WordPress のインストール画面が表示されました。

appservice-docker-wordpress-02.png

参考

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?