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?

【Azure】Azure AppServiceでSQLiteを動かす方法

Posted at

はじめに

Azure SQL Database ではサブスクリプションごとに1つ無料で SQL Server を作成することができます。学習のため個人開発していたプロジェクトで使用していたのですが、この度完成し次のプロジェクトに取り掛かる際に接続先 DB を SQLite に変更しました。

その際に Azure App Service 上で SQLite を動作させることに苦労したため方法をまとめました。

EFCore でのプロパイダー変更方法については下記記事にまとめました。読んでくださると幸いです。

環境

  • Windows11
  • .Net8
  • ASP.Net Core
  • SQLite

結論

DB ファイルをwwwroot配下に配置

wwwrootフォルダが存在しない場合は手動で ASP.Net Core プロジェクトの直下に追加すれば大丈夫です。

解説

プロジェクト直下などに DB ファイルを配置しても正常に動かない原因

SQLite はサーバー構築が不要な軽量の RDB です。.db.sqlite形式で保存された DB ファイルに対してアクセスを行います。

そのため SQLite を App Service 上で動作させるためには当たり前ですが.db.sqliteファイルが App Service 上に存在している必要があります。

そして通常ビルドの成果物にこれらの DB ファイルは含まれません。そのためローカルで確認した際には正常に動くのにいざデプロイすると全く動かないという現象が発生しました。

wwwroot配下に DB ファイルを置くとうまくいく理由

アプリ発行を行うdotnet publishの際に発行する対象について公式ページには以下のように記載があります。

ASP.NET Core Web アプリを発行するときは、次の資産が含まれます。

  • ビルド成果物
  • 次の glob パターンと一致するフォルダーおよびファイル:
    • ***.config (例: web.config)
    • ***.json (例: appsettings.json)
    • wwwroot**

wwwroot配下に配置したファイルはそのままの状態で発行されるアプリに含まれるため App Service に配置ができました。

備考

私が使用している環境が Asp.net Core であったため対応方法をそのまま記載しました。

本質としては AppService 上に DB ファイルが配置されていることであるため、他の言語でも同じ観点で対応すれば SQLite を使用することが可能です。

おわりに

ローカルでは正常に動くのにデプロイ環境でのみうまくいかない現象に初めて遭遇したためかなり苦戦しました。デプロイ周りは Visual Studio の力を借りてやっていたため深く理解するいい機会になったと思います。

この記事が皆様のコーディングライフの助けになれば幸いです!!

参考

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?