Asp.net .NET ASP核心Docker容器中的Sqlite数据库为空

Asp.net .NET ASP核心Docker容器中的Sqlite数据库为空,asp.net,sqlite,docker,Asp.net,Sqlite,Docker,我试图将.NET ASP核心web应用程序包装到Docker容器中,但容器中的Sqlite数据库似乎是空的 在控制器中,我执行以下查询: using (var connection = new SQLiteConnection(_connectionString)) { connection.Open(); using (var cmd = new SQLiteCommand("SELECT COUNT(*) FROM sqlite_master WHERE type='tabl

我试图将.NET ASP核心web应用程序包装到Docker容器中,但容器中的Sqlite数据库似乎是空的

在控制器中,我执行以下查询:

using (var connection = new SQLiteConnection(_connectionString))
{
    connection.Open();
    using (var cmd = new SQLiteCommand("SELECT COUNT(*) FROM sqlite_master WHERE type='table';", connection))
    {
        result = (Int64)cmd.ExecuteScalar();
    }
}
其中,
\u connectionString
定义如下:

private static readonly string _database = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(Assembly.GetEntryAssembly().Location), "LocalDb\\v1\\sqlitedb.db");
Dockerfile:

FROM microsoft/dotnet:sdk AS build-env
WORKDIR /app

# Copy csproj and restore as distinct layers
COPY *.csproj ./
RUN dotnet restore

# Copy everything else and build
COPY . ./
RUN dotnet publish -c Release -o out

# Build runtime image
FROM microsoft/dotnet:aspnetcore-runtime
WORKDIR /app
COPY --from=build-env /app/out .
ENTRYPOINT ["dotnet", "MyApp.dll"]
我使用
docker build-t MyApp:dev.
构建,并使用
docker run-p8080:80-e“ASPNETCORE\u ENVIRONMENT=Development”MyApp:dev运行

当我在Visual Studio中使用IIS运行应用程序时,我得到了预期的表数,但在docker中它返回0。另外,当我查询一个表时,我得到一个
SQLiteException:SQL逻辑错误没有这样的表
错误

当我SSH到容器中时,我可以看到数据库文件在我期望的地方:在
app/LocalDb/v1/


有什么问题的线索吗?

找到了问题。该容器基于Linux,无法识别带有反斜杠的
.db
文件的文件路径。出于某种原因,它创建了一个名为
LocalDb\v1\sqlitedb.db
的新文件(不是目录,而是具有该名称的实际文件)。将路径更改为正向斜杠解决了此问题。

在哪里初始化数据库内容。看起来您没有将预填充的数据库复制到容器中。@SteveBoyd
.db
文件包含所有内容。这纯粹是为了查找,并且在编写web应用程序之前已预先填充。您好,请告诉我如何更改路径?我需要替换什么?
options.UseSqlite(@“Data Source=./Data/blogging.db”)
@User12351259599491,在我的c代码中,我更改了以下行
private static readonly string\u database=System.IO.Path.GetDirectoryName(Assembly.GetEntryAssembly().Location),“LocalDb\\v1\\sqlitedb.db”)改为使用正斜杠。