Как запустить сценарии SQL в Dockerfile для заполнения образа Microsoft SQL Docker? - PullRequest
0 голосов
/ 30 августа 2018

Я загрузил образ Microsoft SQL Server Express с Docker Hub. Я пытаюсь расширить его, добавляя пустые базы данных с пустыми таблицами в нем и получая этот вывод в виде изображения, которое затем смогу использовать в своем проекте.

Как запустить следующий сценарий SQL?

initdb.sql

USE MASTER
GO

CREATE DATABASE MyDB1
GO

CREATE TABLE [dbo].[MyTable1]
(
    [Id] INT NOT NULL,
    [Name] NVARCHAR(256) NOT NULL,
)

CREATE TABLE [dbo].[MyTable2]
(
    [Id] INT NOT NULL,
    [Name] NVARCHAR(256) NOT NULL,
)
GO

-- Create database and tables for Clinical
CREATE DATABASE MyDB2
GO

CREATE DATABASE MyDB3
GO

Вот докер-файл, который у меня есть:

FROM microsoft/mssql-server-windows-express AS base
WORKDIR /app

ENV ACCEPT_EULA Y
ENV sa_password supersecretpassword

FROM base AS final
WORKDIR /app

Я не знаю, использовать ли команду CMD или как-то вызвать SQLCMD, но я не могу сделать это правильно.

Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 30 августа 2018

Надеюсь, у кого-то найдется лучшее решение, чем это, но в итоге я написал небольшую C # -функцию для этого. Поскольку я использую докер SQL для автоматического тестирования на C #, добавить его было несложно, например:

private bool SqlServerScript(string connection, string filename) {
  try {
    using (SqlConnection sqlConnection = new SqlConnection(connection)) {
      sqlConnection.Open();
      SqlCommand sqlCommand = new SqlCommand(File.ReadAllText(filename), sqlConnection);
      sqlCommand.ExecuteNonQuery();
      return true;
    }
  } catch {
  }
  return false;
}

(обработка ошибок оставлена ​​в качестве упражнения для читателя)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...