我是Docker的新手,目前正在Visual Studio 2017 15.8.6中为SQL数据库项目创建Docker容器。该项目包含两个基本表和一个Script.PostDeployment.sql,用于使用一些测试数据填充表。
该项目可以在本地很好地构建和发布,但是当我尝试运行docker compose时,部署后脚本失败,并出现重复的键约束错误,就好像该脚本已经在运行。如果我删除了部署后脚本,则创建容器没有问题。
这是我的脚本:
docker-compose.yml:
version: '3.4'
services:
dockertestsql:
image: ${DOCKER_REGISTRY}dockertestsql
container_name: mssql
build:
context: .\DockerTestSQL
dockerfile: Dockerfile
Dockerfile :(目前暂无密码:)
# escape=`
FROM microsoft/mssql-server-windows-developer
SHELL ["powershell"]
EXPOSE 1433
VOLUME c:\database
ENV ACCEPT_EULA=Y
Script-PostDeployment.sql(标记为PostDeploy):
:r .\Data\dbo.Contacts.Table.sql
GO
:r .\Data\dbo.Attendance.Table.sql
GO
这两个引用的脚本仅在相关表上有一个INSERT语句列表。
尽管在容器中确实创建了dacpac(即使出于某种原因也创建了inetpub \ wwwroot,即使我指定了WORKDIR),也尚未在容器中创建数据库,但这是我所期望的(我没有告诉Docker发布D B)。如果在容器上运行sqlcmd,则仅列出4个默认系统数据库。