Я очень новичок в Docker и нахожусь в процессе создания контейнера Docker для проекта базы данных SQL в Visual Studio 2017 15.8.6. Проект содержит две основные таблицы и Script.PostDeployment.sql для заполнения таблиц некоторыми тестовыми данными.
Проект хорошо создает и публикует локально, но когда я пытаюсь запустить docker compose, сценарий после развертывания завершается неудачно с ошибками ограничения повторяющихся ключей, как если бы сценарий уже был запущен. Если я удалю сценарий после развертывания, контейнер будет создан без проблем.
Вот мои сценарии:
докер-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 публиковать БД). Если я запускаю sqlcmd для контейнера, в списке отображаются только 4 системные базы данных по умолчанию.