LoginSignup
3
4

More than 3 years have passed since last update.

AzureAppServiceでContainerを使ってWebアプリを公開する

Last updated at Posted at 2019-08-19

概要

試しに利用してみたら便利だったので、記録として残します。
ただ、個人的にはVPC内に置く機能がβ版だったり、Webアプリとしてしか公開ができなかったり、
本番運用としてはログ周りの機能が弱いとも感じるので趣味サイトとして利用することを前提とした方がいいと思います。

仕様等

AzureAppServiceを利用するにはAppServicePlanとAppServiceを作成する必要があります。
例えるとAppServicePlanがサーバであり、AppService自体はアプリケーションを管理する物という感じ。

Azure CLIのインストール

$ brew install azure-cli

Windwosの場合はこちらをご覧ください

azコマンドのリファレンス

構築手順

RailsのWelcome画面を出すまでところまでとします。

  1. Azure環境にログイン
  2. ResourceGroupの作成
  3. AzureContainerRegistry(以下ACR)の作成
  4. RailsのDockerImageの準備
  5. ACRにDockerImageのPush
  6. AppServicePlanの作成
  7. AppServiceの作成
  8. CDの設定
  9. 環境変数の設定
  10. 確認

1. Azure環境にログイン

ブラウザでログイン画面が表示されるのでログインする

$ az login

2. ResourceGroupの作成

これに各種リソースを登録していきます

$ az group create --name nagi125-dev --location japaneast

3. AzureContainerRegistryの作成

これにDockerImageを登録していきます

$ az acr create --resource-group nagi125-dev --name nagi125acr --sku Basic --admin-enabled true --location japaneast

4. RailsのDockerImageの準備

Railsアプリケーションの作成

$ rails new rails-sample-app
$ cd ./rails-sample-app
$ touch Dockerfile
$ vim Dockerfile

Dockerfileの準備

FROM ruby:2.6.3

ENV TZ Asia/Tokyo
ENV RAILS_ENV development

RUN apt-get update -qq && \
    apt-get install --no-install-recommends -y netcat build-essential libpq-dev nodejs && \
    apt-get clean && \
    rm -rf /var/cache/apt
RUN gem install bundler

COPY Gemfile Gemfile.lock /app/

WORKDIR /app
RUN bundle install

COPY . /app

ENTRYPOINT ["rails", "server", "-b", "0.0.0.0"]

Imageの作成とACR用のタグをつける

$ docker build -t nagi125/rails-sample-app .
$ docker tag nagi125/rails-sample-app:latest nagi125acr.azurecr.io/nagi125/rails-sample-app:latest

5. ACRにDockerImageのPush

$ az acr login --name nagi125acr
$ docker push nagi125acr.azurecr.io/nagi125/rails-sample-app:latest

6. AppServicePlanの作成

$ az appservice plan create --resource-group nagi125-dev --name rails-sample-app-plan --sku B1 --location japaneast --is-linux

7. AppServiceの作成

AppServicePlanとACRのImageを指定して作成する

$ az webapp create --resource-group nagi125-dev --plan rails-sample-app-plan --name rails-sample-app --deployment-container-image-name nagi125acr.azurecr.io/nagi125/rails-sample-app:latest

8. CD設定

これを設定する事でImageをPushしてしばらくするとAppServiceに反映されるようになります。
※ 2-3分経っても反映されない場合AppServiceの再起動をしてみるとよいかも。

AppServiceとACRの紐付け

$ az webapp config container set --name rails-sample-app --resource-group nagi125-dev --docker-custom-image-name nagi125acr.azurecr.io/nagi125/rails-sample-app:latest --docker-registry-server-url http://nagi125acr.azurecr.io --docker-registry-server-user nagi125acr --docker-registry-server-password xxxxx

※ passwordはコマンドから確認できないため下記手順で確認する
nagi125acr_-_アクセス_キー_-_Microsoft_Azure.png

CD設定

webhookのuriは返ってきた値を利用する
※ zsh等を利用している人は$のエスケープを忘れないようにしてください

$ az webapp deployment container config -g nagi125-dev -n rails-sample-app --enable-cd true
$ az acr webhook create -n railsSampleApp -r nagi125acr --scope nagi125/rails-sample-app:latest --location japaneast --uri xxxxx --actions push delete

9. 環境変数の設定

$ az webapp config appsettings set --settings RAILS_ENV=development -g nagi125-dev -n rails-sample-app

10. 確認

$ az webapp browse --resource-group nagi125-dev --name rails-sample-app

ブラウザに例の画面が表示されれば成功です。
※ 初回だと反映までに5分ぐらいかかるかもしれません。
Ruby_on_Rails.png

3
4
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
3
4