1
1

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.

Azure Web App for Containers で スケールしたりリスタートしてもファイルを永続化する方法

Posted at

Azure Web App for ContainersとはAzureが提供するPaaSでWebアプリケーションの入ったDockerイメージを簡単に動かすことができるサービスです。
デフォルトではWebアプリケーション実行中にユーザーからアップロードされたファイルやプログラムが作ったファイルなどを永続化して保持することができませんが、設定を変更することでファイルの永続化をすることができ、インスタンスを増やしても共通のストレージを見ることができます。

WEBSITES_ENABLE_APP_SERVICE_STORAGEの環境変数をtrueにする

Azure Web AppのConfigurationで、Application settingsとして環境変数をセットできるので、そこでWEBSITES_ENABLE_APP_SERVICE_STORAGEをtrueにセットします。これで永続ストレージが有効になります。

Image from Gyazo

/homeディレクトリ以下に保存したいファイルを設置する。

Azure Web App for Containerは上記の環境変数をtrueにすると、Container起動時に/homeディレクトリに永続ストレージをVolumeとしてアタッチします。そのため、/homeディレクトリ以下にファイルを保存するとその他のインスタンスからでもそのファイルが参照できるようになります。

/homeディレクトリにファイルを保存するように変更する方法として、以下の方法が考えられます。

  1. アプリケーション側で/homeディレクトリにファイルを保存するように変更する
  2. コンテナの起動スクリプトでファイルの保存先となるディレクトリから/home以下にシムリンクを貼る

1の方法はそのままなので説明は省くとして、2の方法でシムリンクを貼るときにわざわざDockerfileではなく、起動スクリプトで貼るようにしている理由ですが、Dockerfile内で/homeディレクトリにシムリンクを貼ってもContainer起動時にVolumeがアタッチされると/homeディレクトリへのシムリンクが削除されてしまうからです。

終わりに

これでAzure web app for containersでもユーザーがアップロードした画像をローカルに保存するだけで、他のインスタンスからでも参照できるようになります。
WordPressやEC-CUBEのようなOSS CMSを使う場合には重宝するので、ぜひ参考してください。

参考

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?