【问题标题】:Docker - Can not connect my .Net Core API to my SQLServerDocker - 无法将我的 .Net Core API 连接到我的 SQLServer
【发布时间】:2021-06-21 05:58:01
【问题描述】:

我正在从事 DDD 中的微服务项目。 我有 3 个 API 和 3 个数据库(每个 API 1 个数据库) 我们将专注于 Trainingcourses.API 和 Trainingcourses.Db

当我调用使用数据库的 Trainingcourses.API 控制器时,我收到此错误: Error

Docker 编写文件:

services:
  trainingcourses.api:
    environment:
      - ASPNETCORE_ENVIRONMENT=Development
      - ASPNETCORE_URLS=http://+:80
    depends_on:
      - trainingcourses.db
    ports:
      - "8000:80"
    volumes:
      - ${APPDATA}/ASP.NET/Https:/root/.aspnet/https:ro

  trainingcourses.db:
    image: "mcr.microsoft.com/mssql/server:2019-latest"
    container_name: "TrainingCourses.Db"
    hostname: "TrainingCoursesDb"
    environment:
      SA_PASSWORD: "1234Test4321"
      ACCEPT_EULA: "Y"
    ports:
      - "1434:1433"

AppSettings.json

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "ConnectionStrings": {
    "CvGamifyTrainingCourse": "Server=TrainingCoursesDb;Database=TrainingCoursesDb;User=sa;Password=1234Test4321;"
  }
}

感谢您的帮助:-)

【问题讨论】:

  • 为什么要把1434端口绑定到1433?那行不应该只是- "1433:1433"吗?
  • @DavidG 也可以,但没关系。因为它可能是 1435:1433...但是感谢您的回答:-)
  • 当然可以,但是您的连接字符串将无法像此处所示那样工作。
  • @DavidG :我尝试使用 1433。它不会改变任何东西 ;-)

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


【解决方案1】:

如果列为服务的两个容器必须一起通信,您必须在 docker 系统中定义的 network 上进行中继。

ports 定义通过 docker 主机向主机 LAN 的其余部分公开的端口。

我建议这样更改您的docker-compose.yml

services:
  trainingcourses.api:
    environment:
      - ASPNETCORE_ENVIRONMENT=Development
      - ASPNETCORE_URLS=http://+:80
    depends_on:
      - trainingcourses.db
    ports:
      - "8000:80"
    volumes:
      - ${APPDATA}/ASP.NET/Https:/root/.aspnet/https:ro
    networks:
      - net01

  trainingcourses.db:
    image: "mcr.microsoft.com/mssql/server:2019-latest"
    container_name: "TrainingCourses.Db"
    hostname: "TrainingCoursesDb"
    environment:
      SA_PASSWORD: "1234Test4321"
      ACCEPT_EULA: "Y"
    ports:
      - "1434:1433"
    networks:
      - net01

networks:
  net01:

新的是每个服务的networks: 条目和文件末尾的netowrks: 部分。

14348000 端口将通过 docker 主机暴露给其他连接 LAN 的客户端。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-20
    • 2020-01-11
    • 2019-11-24
    • 1970-01-01
    • 2019-07-10
    • 2020-04-19
    • 2020-02-22
    • 2019-08-11
    相关资源
    最近更新 更多