Docker:如何在SQL Server Dockerfile中运行SQL脚本

时间:2019-08-29 16:37:06

标签: sql-server docker dockerfile sqlcmd

我试图构建一个SQL Server容器,然后运行一些SQL脚本来添加用户并通过使用docker build .和更高版本的docker-compose build-> docker-compose up

FROM mcr.microsoft.com/mssql/server
COPY all.sql all.sql
COPY auto-setup-db.sql auto-setup-db.sql

RUN /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P myPassword -i auto-setup-db.sql

此行^失败,显示:

  

Sqlcmd:错误:SQL Server的Microsoft ODBC驱动程序17:登录超时已到期。
  Sqlcmd:错误:SQL Server的Microsoft ODBC驱动程序17:TCP提供程序:错误代码0x2749。
  Sqlcmd:错误:SQL Server的Microsoft ODBC驱动程序17:建立与SQL Server的连接时发生了与网络相关或特定于实例的错误。找不到服务器或无法访问服务器。检查实例名称是否正确以及SQL Server是否配置为允许远程连接。有关更多信息,请参见SQL Server联机丛书。

     

命令'/ bin / sh -c / opt / mssql-tools / bin / sqlcmd -S localhost -U sa -P myPassword -i auto-setup-db.sql'返回了非零代码:1 < / p>

我不确定自己在做错什么,有人知道吗?

编辑:这是我的docker-compose文件的相关部分:

version: '3'
services:
  mssql:
    image: mssql
    build: ./e2e/mssql
    container_name: mssql
    environment:
      SA_PASSWORD: "myPassword"
      ACCEPT_EULA: "Y"

编辑2:

运行docker-compose up从SQL Server ex获得很多输出。

2019-08-29 17:05:13.02 spid8s      Starting up database 'tempdb'.

但是我需要找到一种在其中运行模式脚本的方法,因此我认为docker-build是最简单的地方。我是Docker的新手

1 个答案:

答案 0 :(得分:0)

尝试在文件路径周围添加双引号并使用完整路径。请参见示例。

。 。 。 展览1433

运行mkdir -p / var / opt / mssql / database

WORKDIR / var / opt / mssql / database

COPY自动设置db.sql。

CMD / opt / mssql-tools / bin / sqlcmd -S localhost,1433 -U SA -P myPassword -i“ /var/opt/mssql/database/auto-setup-db.sql” -o“ / var /opt/mssql/database/auto-setup-db.log“