You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker容器中Umbraco 10挂载SQLite数据库失败求助

解决Docker容器中Umbraco 10 SQLite数据库无法打开的问题

核心问题分析

报错SQLite Error 14: 'unable to open database file'通常由以下原因导致:

  • 本地SQLite文件未正确挂载到容器内Umbraco期望的路径
  • 容器内进程对挂载的数据库文件没有读写权限
  • Umbraco的数据库连接字符串与容器内路径不匹配

解决步骤

1. 确认Umbraco的数据库连接字符串

打开项目中的appsettings.json(或appsettings.Development.json),检查umbracoDbDSN连接字符串:

"ConnectionStrings": {
  "umbracoDbDSN": "Data Source=./umbraco/Data/Umbraco.sqlite.db;Cache=Shared"
}

注:容器内的工作目录是/app,所以相对路径./umbraco/Data/对应容器内的绝对路径/app/umbraco/Data/,需确保这个路径是Umbraco实际读取数据库的位置。

2. 修改docker-compose.yml添加挂载卷

无需修改Dockerfile,挂载配置在docker-compose中完成。更新volumes节点,添加本地SQLite文件到容器的映射:

version: '3.9'

services:
  moranmono-umbraco:
    container_name: moranmono-umbraco
    build:
      context: .
      dockerfile: moranmono.web/Dockerfile
    ports:
      - 4000:4000
    environment:
      - ASPNETCORE_ENVIRONMENT=Development
    volumes:
      - ~/.vsdbg:/remote_debugger:rw
      # 添加SQLite文件挂载
      - ~/umbraco/Data/Umbraco.sqlite.db:/app/umbraco/Data/Umbraco.sqlite.db:rw

关键注意点:

  • 确保本地路径~/umbraco/Data/Umbraco.sqlite.db确实存在,若本地目录不存在,Docker会自动创建为目录而非文件,导致SQLite无法识别,需提前创建目录和文件。
  • 末尾的:rw确保容器对文件有读写权限。

3. 解决容器内文件权限问题

Linux/macOS环境下,容器内的ASP.NET进程默认以非root用户运行,可能没有本地文件的读写权限:

  • 方法一:修改本地文件权限
    # 赋予文件可读可写权限
    chmod 664 ~/umbraco/Data/Umbraco.sqlite.db
    # 确保目录有执行权限(允许进入目录)
    chmod 755 ~/umbraco/Data/
    
  • 方法二:让容器以当前本地用户身份运行
    在docker-compose.yml中添加user配置:
    services:
      moranmono-umbraco:
        # ...其他配置
        user: "${UID}:${GID}"
    
    启动容器前先导出当前用户的UID和GID:
    export UID=$(id -u) && export GID=$(id -g) && docker-compose up -d
    

4. 验证挂载是否生效

启动容器后,进入容器检查文件状态:

docker exec -it moranmono-umbraco ls -l /app/umbraco/Data/

确认输出中存在Umbraco.sqlite.db,且权限显示为可读可写(如-rw-rw-r--)。

5. 重启容器测试

完成上述配置后,重启容器:

docker-compose down && docker-compose up -d

查看容器日志确认错误是否消失:

docker logs moranmono-umbraco

内容的提问来源于stack exchange,提问作者Moran Talmon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 22:15:32