我在将数据库迁移到 Docker 容器时遇到问题。
在上述迁移过程中,我收到以下错误
System.InvalidOperationException:“要更改列的 IDENTITY 属性,需要删除并重新创建该列。”
Docker-compose.yml:
version: '3.4'
networks:
backend:
services:
libraryapi:
container_name: Library-Api
image: ${DOCKER_REGISTRY-}libraryapi
build:
context: .
dockerfile: Dockerfile
networks:
- backend
ports:
- 8001:80
- 8003:443
environment:
- DB_HOST=librarydb
- DB_NAME=Library
- DB_SA_PASSWORD=q6ZOc32APBvTelKK6nlb0g31rVcWTq
librarydb:
container_name : Library-DB
image : mcr.microsoft.com/mssql/server:2022-latest
networks:
- backend
ports:
- 8002:1433
environment:
- ACCEPT_EULA=Y
- MSSQL_SA_PASSWORD=q6ZOc32APBvTelKK6nlb0g31rVcWTq
Dockerfile:
#请参阅 https://aka.ms/containerfastmode 了解 Visual Studio 如何使用此 Dockerfile 构建映像以加快调试速度。
来自 mcr.microsoft.com/dotnet/aspnet:6.0 AS 基础
工作目录/应用程序
暴露80
暴露443
来自 mcr.microsoft.com/dotnet/sdk:6.0 AS 版本
工作目录/src
复制[“LibraryAPI.csproj”,“。”]
运行 dotnet 恢复“./LibraryAPI.csproj”
复制。 .
工作目录“/src/。”
运行 dotnet build "LibraryAPI.csproj" -c Release -o /app/build
FROM 构建 AS 发布
RUN dotnet 发布“LibraryAPI.csproj”-c Release -o /app/publish /p:UseAppHost=false
来自基础 AS 最终
工作目录/应用程序
复制--from=发布/应用程序/发布。
ENTRYPOINT [“dotnet”,“LibraryAPI.dll”]
docker-compose-override(无论它是什么):
version: '3.4'
services:
libraryapi:
environment:
- ASPNETCORE_ENVIRONMENT=Development
- ASPNETCORE_URLS=https://+:443;http://+:80
ports:
- "80"
- "443"
volumes:
- ${APPDATA}/Microsoft/UserSecrets:/root/.microsoft/usersecrets:ro
- ${APPDATA}/ASP.NET/Https:/root/.aspnet/https:ro
我正在通过 Visual Studio 中的 Docker Compose 项目启动我的应用程序
我已经删除了容器、docker缓存,并多次重建了项目。我不知道我能做什么。
我认为这个问题是特定于数据库的,而不是与 Docker 相关的。请查看数据库迁移。它表示您需要删除具有标识属性的列并重新创建它以应用迁移。您的 SQL 代码目前是错误的。