docker - Docker for windows sql express 卷数据不持久
问题描述
重新启动计算机后,我很难让我的 mssql-server-windows-express 容器化数据库保留任何创建的行。
它位于我使用 Visual Studio 2017 社区版的默认“启用 Docker 支持”复选框创建的项目中。我正在使用 Entity Framework Core 2 迁移来使用 ASP.NET Core 2.1 创建和更新数据库。
我觉得这个问题可能与 Docker for Windows 具有通常的路径语法有关,但这只是一种预感。
我尝试了很多不同的 Stackoverflow 和博客建议和路径,但数据永远不会存在。我必须在这一点上寻求帮助。
以下是我尝试过的众多 docker-compose 文件和想法中的两个:
version: '3.4'
services:
webpresentation:
image: webpresentation
build:
context: .
dockerfile: WebPresentation\Dockerfile
db:
image: microsoft/mssql-server-windows-express
environment:
ACCEPT_EULA: Y
SA_PASSWORD: Test1
ports:
- "1433:1433"
volumes:
- "C:\\ProgramData\\Docker\\volumes\\dockercompose4363425345347741_sqlvolume:c:\\var/opt/mssql"
volumes:
sqlvolume:
此文件编译,但重新启动后行不会保留。
version: '3.4'
services:
webpresentation:
image: webpresentation
build:
context: .
dockerfile: WebPresentation\Dockerfile
db:
image: microsoft/mssql-server-windows-express
container_name: myDbSqlExpress
environment:
ACCEPT_EULA: Y
SA_PASSWORD: Test1
'attach_dbs={"dbName":"MyDb","dbFiles":"C:\\ContainerData\\MyDb.mdf","C:\\ContainerData\\MyDb.ldf"}'
ports:
- "1433:1433"
volumes:
- "C:\\DockerData:c:\\ContainerData"
volumes:
sqlvolume:
name: myDb-sqlvolume
此文件给出错误:
错误 MSB4018 “GetServiceReferences”任务意外失败。Microsoft.Docker.Utilities.CommandLineClientException:yaml.scanner.ScannerError:扫描“C:\Projects\MyProject\MyApp\docker-compose.yml”中的简单键时,第 16 行,第 7 列找不到预期的“:”
我在这里做错了什么?谁能帮我更正任一文件,以便在重新启动计算机后新创建的行仍然存在?
非常感谢!
解决方案
最终允许我在系统重启后持久化数据的 docker-compose.yml 文件如下:
version: '3.4'
services:
webpresentation:
image: webpresentation
build:
context: .
dockerfile: WebPresentation\Dockerfile
db:
image: microsoft/mssql-server-windows-express
environment:
ACCEPT_EULA: Y
SA_PASSWORD: Test1
attach_dbs: '[{"dbName":"MyProject","dbFiles":["C:\\DockerDbData\\MyProject.mdf","C:\\DockerDbData\\MyProject_log.ldf"]}]'
ports:
- "1433:1433"
volumes:
- "C:\\Projects\\MyProject\\DockerDbDataVolume:C:\\DockerDbData"
推荐阅读
- javascript - 给定一个整数数组 'num' 返回递增 1 的数组
- godot - 使用 test_move() 并在 Godot 3.1 中找到 Transform2D
- ios - 如何使用未经身份验证的用户从 Swift 中的 AWS S3 存储桶下载文件
- terraform - 运行 terraform validate 时出现解析错误。怎么修
- r - 在R循环中满足条件时按组计数数字
- html - 将 CSS 摇动动画添加到没有悬停的按钮
- html - 如何使图像缩小到正常视图?
- python - 将字符串转换为具有特定精度的浮点数的干净方法?
- python - 如何从 python 中的 DOT 代码生成图形图像?
- java - IntelliJ IDEA 错误:无法找到或加载主类 GradleStart