【问题标题】:Asp.net core webapi connection error to mongo docker image when adding a docker file添加 docker 文件时,Asp.net core webapi 连接到 mongo docker 映像时出错
【发布时间】:2021-04-12 06:09:52
【问题描述】:

我开发了一个简单的 dotnet core api 连接到 mongo docker 镜像。该应用程序与以下 uri (mongodb://localhost:27017) 完美配合: mongo connection string

{
  "MongoDB": {
    "Database": "messagesdb",
    "Host": "localhost",
    "Port": 27017,
    "User": "",
    "Password": ""
  },
  "Logging": {
    "LogLevel": {
      "Default": "Warning"
    }
  },
  "AllowedHosts": "*"
}

JSON 响应 Json Response after a successful run

但是当我通过visual studio添加一个docker文件,并将settings.json文件中的主机设置为mongo而不是localhost时,如图所示(mongodb://mongo:27017): mongo connection string

Docker 文件:

FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build
WORKDIR /src
COPY ["ErrorMessagesAPI.csproj", ""]
RUN dotnet restore "./ErrorMessagesAPI.csproj"
COPY . .
WORKDIR "/src/."
RUN dotnet build "ErrorMessagesAPI.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "ErrorMessagesAPI.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "ErrorMessagesAPI.dll"]

mongo 的 docker-compose :

version: '3.8'

services:

  mongo:
      image: mongo
      container_name: mongo
      restart: always
      ports:
        - "27017:27017"
      volumes:
        - mongo-data:/data/db
  mongo-express:
      image: mongo-express
      container_name: mongo-express
      restart: always
      ports:
        - "8081:8081"
      depends_on:
        - mongo  
volumes:
  mongo-data:
    driver: local

API 无法正常工作,如下图所示: docker run result,完整代码可以在这里找到MessageAPI

我正在关注这里的文章Docker + MongoDB + .NET Core = a good tim 有人可以帮忙吗?

【问题讨论】:

  • 文本“在此处输入图像描述”并不能很好地描述您的问题。您能否编辑您的问题以包含将问题重现为文本而不是图像所需的详细信息,并直接在问题中而不是链接后面?

标签: mongodb docker asp.net-core


【解决方案1】:

我想分享我对这个问题的解决方案,以便轮到您受益。 要链接到 mongo 图像,您应该更新 docker-compose 文件,并保持设置不变。在 docker-compose 中提供环境变量将重写 settings.json 文件中的设置,如下:

version: '3.1'
services:
mongo:
    image: mongo
    restart: always
    ports:
      - 27017:27017
mongo-express:
    image: mongo-express
    restart: always
    ports:
      - 8081:8081
    depends_on:
      - mongo
todo-server:
    build: .
    restart: always
    ports:
      - 5000:80
    environment:
      MongoDB__Host: mongo
    depends_on:
      - mongo

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-17
    • 2017-11-29
    • 1970-01-01
    • 2020-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-05
    相关资源
    最近更新 更多