c# - 使用 Alpine Docker镜像时连接到MongoDb Atlas失败

标签 c# mongodb docker alpine mongodb-atlas

我有一个.net / C#aspnet核心应用程序,该应用程序连接到MongoDb Atlas Cloud数据库。
在本地运行时,一切正常。

现在,我将应用程序放入 Alpine docker镜像中,连接失败。
我遇到了一些异常,指出身份验证不起作用。

这是我的DockerFile,用于构建和运行应用程序

FROM microsoft/dotnet:2.1-sdk-alpine AS builder
WORKDIR /
COPY . .
RUN dotnet publish Api/Api.csproj -o /dockerout/ -c Release

FROM microsoft/dotnet:2.1.3-aspnetcore-runtime-alpine
WORKDIR /app
EXPOSE 80 5000

RUN apk update

COPY --from=builder /dockerout .

ENTRYPOINT ["dotnet", "Api.dll"]

最佳答案

经过大量研究,我发现了一个问题,指出了根本原因:
https://github.com/dotnet/corefx/issues/9608#issuecomment-401370142

因为花了我很多时间,所以我会回答我自己的问题,希望有人可以节省时间。

有两种可能的解决方案是
a)不要使用 Alpine 图像
b)在构建镜像时通过添加像apk add --no-cache openssl这样的open ssl来更新openssl包

完整的DockerFile为我解决了这个问题:

FROM microsoft/dotnet:2.1-sdk-alpine AS builder
WORKDIR /
COPY . .
RUN dotnet publish Api/Api.csproj -o /dockerout/ -c Release

FROM microsoft/dotnet:2.1.3-aspnetcore-runtime-alpine
WORKDIR /app
EXPOSE 80 5000

RUN apk update && apk add --no-cache openssl

COPY --from=builder /dockerout .

ENTRYPOINT ["dotnet", "Api.dll"]

关于c# - 使用 Alpine Docker镜像时连接到MongoDb Atlas失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52198033/

相关文章:

java - Mongodb聚合框架对海量数据进行排序

mongodb - mongo : ERROR: child process failed, 退出,错误号 100

c# - 如何获取当前 C# 源代码文件的路径?

c# - 使用 LINQ to SQL 对所有内容进行分组、求和和聚合

node.js - 在服务器自身解决的路径错误中,为值 "NaN"转换为数字失败

linux - 如何存储已经通过管道的命令的输出

asp.net - 为什么docker build在我的复制路径前添加一个临时目录?

docker - 在docker-compose之前重新编译VueJS应用

c# - 从字节数组创建 CGPDFDocument

c# - MassTransit 消息消费者永远看不到子类类型