Создание контейнера Docker для проекта базы данных SQL не выполняется в Script.PostDeployment - PullRequest
0 голосов
/ 09 ноября 2018

Я очень новичок в 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 системные базы данных по умолчанию.

...