从Linux Docker容器连接到远程MSSQL数据库

时间:2017-06-02 16:10:23

标签: docker docker-compose dockerfile sql-server-on-linux

我有一个基于 microsoft / mssql-server-linux / 图像构建的linux docker容器。此时容器没有任何东西,我正在尝试连接到某个地方的Windows服务器上托管的远程MSSQL数据库。我不确定我该怎么做。

microsoft / mssql-server-linux /的文档没有提供太多细节。任何帮助,将不胜感激。

更新 我现在有容器工作。但是,如果我尝试通过bash脚本创建和播种db,则容器将以代码0退出。

这是 docker文件& docker-compose 文件

version: '2'
services:
  db:
    build: .
    ports:
      - "1433:1433"
    environment:
        ACCEPT_EULA: Y
        SA_PASSWORD: Password
        PATH: /opt/mssql-tools/bin:/opt/mssql/bin:$PATH
    container_name: db

FROM microsoft/mssql-server-linux:latest
EXPOSE 1433
RUN echo $PATH
RUN mkdir -p /usr/src/app
COPY ./db/* /usr/src/app/
WORKDIR /usr/src/app
RUN ls
RUN chmod +x /usr/src/app/dbInit.sh
RUN chmod +x /usr/src/app/dbSeed.sh
CMD /bin/bash ./entrypoint.sh

这是我的 entrypoint.sh

/opt/mssql/bin/sqlservr & /usr/src/app/dbInit.sh

dbInit.sh 包含用于创建db的SQLscripts,一些表和种子。像这样的东西。

sqlcmd -S localhost -U SA -P password -d master -Q "CREATE DATABASE dbo"

docker-compose up --build成功创建数据库,表格和种子。但是容器以代码0退出。看起来像SQL Server它自己被关闭了。

1 个答案:

答案 0 :(得分:1)

文档很清楚..有关详细信息,请参阅 Connect and Query

1.首先,您必须安装SQLCMD工具,因为它们未自动安装

  • 导入公用存储库GPG密钥。
  

curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -

  • 注册Microsoft Ubuntu存储库
  

curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list | sudo tee /etc/apt/sources.list.d/msprod.list

  • 更新源列表并使用unixODBC开发包运行安装命令。
  

sudo apt-get update   sudo apt-get install mssql-tools unixodbc-dev

您可以在此处查看进一步的增强功能: Install tools on Ubuntu

现在您可以查询如下

for local:

  

sqlcmd -S localhost -U SA -P''

对于远程:

  

sqlcmd -S 192.555.5.555 -U SA -P''