我希望这是一个简单的问题。我在任何地方都找不到任何东西。
如何在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
文件将简单地创建一个与此处无关的数据库,以保持最小化。
Errors
我上面得到的错误是 SA 的登录在运行时无效.sql
script:
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
事实上确实如此。
环境
我正在运行码头工人Docker version 18.06.1-ce, build e68fc7a
在 Windows 10 上。
附加或脚本
我没有指定使用环境变量附加数据库attach_dbs
我在很多例子中都看到过。
我试图从端到端测试的角度找到管理 sql 容器的最佳实践,很多文章似乎没有涵盖数据方面的部分 - 即开发流程 https://learn.microsoft.com/en-us/dotnet/standard/microservices-architecture/docker-application-development-process/docker-app-development-workflow
我有兴趣听到评论中关于 Docker 世界中这两种方法的想法。