Linux上的Microsoft SQL Server(docker) - 连接被拒绝

时间:2017-10-01 09:14:15

标签: sql-server linux docker asp.net-core docker-compose

我尝试从我的Asp.Net Core应用程序连接到我使用docker运行的MSSQL,但是我收到了错误消息:

  

"发生与网络相关或特定于实例的错误   建立与SQL Server的连接。找不到服务器或   无法访问。验证实例名称是否正确   SQL Server配置为允许远程连接。 (提供者:TCP   提供者,错误:35 - 发现内部异常)"

这是我的码头工作者:

  api:
    image: api
    container_name: api
    build:
      context: ./Api
      dockerfile: Dockerfile
    ports:
      - "8000:80"
    depends_on:
      - db
  db:
    image: "microsoft/mssql-server-linux"
    container_name: mssql
    environment:
        SA_PASSWORD: "YourStrong!Passw0rd"
        ACCEPT_EULA: "Y"
        MSSQL_PID: "Developer"
    ports:
      - "127.0.0.1:8001:1433"

和appsettings.json:

{
  "ConnectionStrings": {
    "DefaultConnection": "server=127.0.0.1,8001;database=MyTestDb;user=sa;password=YourStrong!Passw0rd"
  }
}

通过SSMS连接效果很好,但在我的代码中我尝试使用:

Database.EnsureCreated();

我收到了上述错误。

你知道我该怎么处理这个问题吗?

1 个答案:

答案 0 :(得分:1)

您的问题是连接字符串

rejoin: func [
    "Reduces and joins a block of values - allows /with refinement." 
    block [block!] "Values to reduce and join" 
    /with join-thing "Value to place in between each element" 
][ 
    block: reduce block 
    if with [ 
        while [not tail? block: next block][ 
            insert block join-thing 
            block: next block
       ] 
       block: head block 
    ] 
    append either series? first block [ 
       copy first block
    ] [
       form first block
    ] 
    next block 
]

在docker-compose容器到容器网络中,您关注容器本身暴露的容器服务名称和端口。您不希望从容器内部考虑主机端口映射。使用以下连接字符串

{
  "ConnectionStrings": {
    "DefaultConnection": "server=127.0.0.1,8001;database=MyTestDb;user=sa;password=YourStrong!Passw0rd"
  }
}