我希望这个简单的问题。我什么都找不到。

如何在Microsoft SQL Server Docker容器中创建数据库?

Dockerfile :

我正在查看以下Dockerfile:

FROM microsoft/mssql-server-windows-developer:latest

ENV sa_password ab873jouehxaAGR

WORKDIR /
COPY /db-scripts/create-db.sql .

# here be the existing run commnd in the image microsoft/mssql-server-windows-developer:latest
#CMD ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';", ".\\start -sa_password $env:sa_password -ACCEPT_EULA $env:ACCEPT_EULA -attach_dbs \\\"$env:attach_dbs\\\" -Verbose" ]

RUN (sqlcmd -S localhost -U SA -P ab873jouehxaAGR -i create-db.sql)

docker-compose.yml :

我整理了以下docker compose文件:
version: '3.4'

services:
  sql.data:
    image: ${DOCKER_REGISTRY}myfirst-mssql:latest
    container_name: myfirst-mssql_container
    build:
      context: .
      dockerfile: ./Dockerfile
    environment:
      SA_PASSWORD: ab873jouehxaAGR
      ACCEPT_EULA: Y

整合在一起

我正在针对上述命令运行docker-compose up。并假定create-db.sql文件将仅创建一个与此处无关的数据库,以使事情保持最少。

错误

我上面得到的错误是SA的登录名在运行.sql脚本时无效:
Step 7/7 : RUN (sqlcmd -S localhost -U SA -P ab873jouehxaAGR -i create-db.sql)
 ---> Running in 2ac5644d0bd9
Sqlcmd: Error: Microsoft ODBC Driver 13 for SQL Server : Login failed for user 'SA'..

看起来好像是在密码更改为ab873jouehxaAGR之前运行,通常看起来像mssql-server-windows-developer:latest.json中的命令,通过检查vscode中的图像来完成-\start -sa_password $env:sa_password -ACCEPT_EULA $env:ACCEPT_EULA -attach_dbs实际上是这样做的。

环境

我正在Windows 10上运行docker Docker version 18.06.1-ce, build e68fc7a

附加或脚本

我没有指定使用在许多示例中看​​到的环境变量attach_dbs附加数据库。

我正在尝试从端到端测试的 Angular 找到管理sql容器的最佳实践,很多文章似乎都没有涉及数据方面的部分-即Development Workflow

我很想听听有关Docker世界中这两种方法的评论。

最佳答案

使用以下命令可以解决您的问题

docker-compose up --build -d

version: '3.4'
services:
  sql.data:
    image: ${DOCKER_REGISTRY}myfirst-mssql:latest
    container_name: myfirst-mssql_container
    environment:
      SA_PASSWORD: ab873jouehxaAGR
      ACCEPT_EULA: Y

在那之后:
docker exec myfirst-mssql_container sqlcmd
  -d master
  -S localhost
  -U "sa"
  -P "ab873jouehxaAGR"
  -Q 'select 1'

10-07 19:15
查看更多