You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/v5.0.0/V5.0.0_MIGRATION_GUIDE.md
+96-19Lines changed: 96 additions & 19 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,5 +1,3 @@
1
-
# Azure Naming Tool v5.0.0 Migration Guide
2
-
3
1
## Overview
4
2
5
3
Version 5.0.0 of the Azure Naming Tool introduces significant enhancements including a modern redesigned UI, SQLite database storage option, and Azure resource name validation capabilities. This guide will help you successfully migrate from previous versions to v5.0.0.
@@ -279,20 +277,42 @@ v5.0.0 requires .NET 10.0 runtime. You **MUST** update your App Service runtime
279
277
280
278
**⚠️ IMPORTANT: .NET 10.0 Docker Image Required**
281
279
282
-
v5.0.0 uses a new Docker image based on .NET 10.0 runtime.
280
+
v5.0.0 uses a new Docker image based on .NET 10.0 runtime. You need to build the image locally from source.
281
+
282
+
**🚨 CRITICAL - Azure Container Apps Users:**
283
+
284
+
If you are deploying to **Azure Container Apps with Azure File Share** for persistent storage:
285
+
286
+
> **DO NOT use SQLite storage!**
287
+
>
288
+
> SQLite does not work with Azure File Share (SMB/CIFS network mounts) due to file locking issues. Your container will fail to start with `"database is locked"` errors.
289
+
>
290
+
> **Solution:** Use FileSystem (JSON) storage instead:
291
+
> - In `appsettings.json`, ensure: `"StorageProvider": "FileSystem"`
292
+
> - This is the default for fresh Docker installations
293
+
> - JSON files work perfectly with Azure File Share mounts
294
+
> - You can still use all v5.0.0 features except Azure Tenant Name Validation (which requires SQLite)
295
+
296
+
**For other Docker deployments:** SQLite works fine with local Docker volumes.
283
297
284
298
1. **STOP the current container (if running):**
285
299
```bash
286
300
docker stop azurenamingtool
287
301
docker rm azurenamingtool
288
302
```
289
303
290
-
2.**Pull the latest v5.0.0 image:**
304
+
2.**Clone the repository and build the v5.0.0 image:**
291
305
```bash
292
-
# Pull the .NET 10.0-based image
293
-
docker pull ghcr.io/mspnp/azurenamingtool:v5.0.0
294
-
# Or use latest tag (ensure it's v5.0.0 or higher)
> - **Any network file system** (SMB/CIFS/NFS) for persistent storage
602
+
> - **Docker with bind mounts to network drives**
603
+
>
604
+
> **Why:** SQLite does not support network file systems due to file locking limitations. The database file will become locked and your container will fail to start with error: `"database is locked"`.
605
+
>
606
+
> **Solution:** Keep using **FileSystem (JSON)** storage provider for these scenarios. JSON file storage works perfectly with network mounts.
607
+
>
608
+
> **When SQLite works:**
609
+
> - ✅ Azure App Service (local disk)
610
+
> - ✅ Docker with Docker volumes (local)
611
+
> - ✅ Standalone installations (local disk)
612
+
> - ✅ Kubernetes with local persistent volumes
613
+
> - ❌ Azure Container Apps with File Share
614
+
> - ❌ Any network-based storage
615
+
577
616
#### Prerequisites
578
617
579
618
1. **Complete Steps 1-5** (Deploy v5.0.0 and restore configuration)
@@ -746,6 +785,44 @@ If you need to rollback from SQLite to file-based storage:
746
785
4. Try rollback procedure (see Step 6)
747
786
5. Restore from pre-migration backup
748
787
788
+
#### Container Fails with "Database is Locked" Error
789
+
**Symptom:** Docker container or Azure Container App fails to start with SQLite error: `"SQLite Error 5: 'database is locked'"` or `"Microsoft.Data.Sqlite.SqliteException (0x80004005)"`
790
+
791
+
**Root Cause:** SQLite does not support network file systems (Azure File Share uses SMB/CIFS protocol). File locking doesn't work correctly over network mounts.
792
+
793
+
**Solution:**
794
+
1. **Immediate Fix - Switch to FileSystem Storage:**
795
+
```bash
796
+
# Stop the container
797
+
docker stop azurenamingtool
798
+
docker rm azurenamingtool
799
+
800
+
# Edit settings/appsettings.json and change:
801
+
"StorageProvider": "FileSystem" # Change from "SQLite"
802
+
803
+
# Delete the SQLite database file (optional, but recommended)
0 commit comments