【发布时间】:2020-01-02 23:37:26
【问题描述】:
我正在尝试构建一个 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:错误:Microsoft ODBC Driver 17 for SQL Server:登录超时已过期。
Sqlcmd:错误:Microsoft ODBC Driver 17 for SQL Server:TCP 提供程序:错误代码 0x2749。
Sqlcmd:错误:Microsoft ODBC Driver 17 for SQL Server:建立与 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
而且我不确定我做错了什么,有人知道吗?
编辑:这是我的 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 很陌生
【问题讨论】:
-
您在代码中的哪个位置创建实例? Microsoft 文档中有您需要接受 EULA、设置 SA 密码等的脚本。
-
@dfundako 我尝试像这样传递它(见编辑)并得到同样的错误
-
环境变量中是否应该引用Y?
-
@dfundako 是的 (docs.docker.com/compose/aspnet-mssql-compose) 但我的密码也应该是,很好,会报告的。编辑:同样的错误
-
类似问题Docker + mssql-server-linux: How to launch .sql file during build (from Dockerfile)。正如@Daniel N 建议的那样,执行 sqlcmd 时服务器可能没有运行
标签: sql-server docker dockerfile sqlcmd