.net core docker映像,每个客户具有应用程序设置
我有一个.NET Core 2.0 web api,它运行在负载平衡器后面的Docker容器(也是Docker容器)上。我想通过拥有多个容器来扩展web api,每个客户一个容器。考虑到这一点,我必须在配置中进行更改,以分离和抽象客户详细信息,这样我就可以为每个客户设置应用程序。那样的话,我就会有.net core docker映像,每个客户具有应用程序设置,docker,asp.net-core,dockerfile,Docker,Asp.net Core,Dockerfile,我有一个.NET Core 2.0 web api,它运行在负载平衡器后面的Docker容器(也是Docker容器)上。我想通过拥有多个容器来扩展web api,每个客户一个容器。考虑到这一点,我必须在配置中进行更改,以分离和抽象客户详细信息,这样我就可以为每个客户设置应用程序。那样的话,我就会有appsettings.CustomerA.config,appsettings.CustomerB.config等等 我的常规Dockerfile是: FROM microsoft/aspnetcor
appsettings.CustomerA.config
,appsettings.CustomerB.config
等等
我的常规Dockerfile是:
FROM microsoft/aspnetcore-build AS builder
WORKDIR /app
# copy csproj and restore as distinct layers
COPY ./Project/*.csproj ./
RUN dotnet restore
# copy everything else and build
COPY ./Project ./
RUN dotnet publish -c Release -o out
# build runtime image
FROM microsoft/aspnetcore
WORKDIR /app
COPY --from=builder /app/out ./
ENV ASPNETCORE_ENVIRONMENT Production
ENTRYPOINT ["dotnet", "Project.dll"]
这很好,但我不知道的是我是否可以有不同的DockerFile,每个客户一个,我指定客户(不确定这是否是一个好的做法,因为我会将环境与客户混合,但同时,如果有意义,环境是针对给定客户的)或者根据客户的不同,我是否应该创建一个不同的配置文件进行复制
我从MicrosoftDocker文档中获取docker模板,并自己添加了环境
感谢您的帮助我们不建议为每个客户提供单独的Dockerfile,甚至不建议使用单独的图像。这将很快导致需要管理大量DockerFile,并会带来许多复杂性,尤其是当您需要升级所有文件/图像时,新功能需要这样做 最好有一个Docker映像,并将所有特定于客户的配置外部化到映像的外部 有多种方法可以做到这一点。在Docker中,您可以将环境变量传递给容器以对其进行配置。您还可以将环境变量包装在配置文件中,并将其作为env文件传递
另一种“Docker方式”,将图像之外的内容具体化,就是使用。运行容器时,可以将主机上的目录绑定到容器上。在目录中,您可以有配置文件。。。启动时容器可以拾取。非常感谢。然后,我将配置容器以使用挂载。似乎是实现我想要的最敏感的方式。如果我想使用swarm,我想知道如何实现自动化。计划是在工作节点上部署容器,但如果选择使用装载,我需要将客户配置单独部署到相关节点。我说得对吗?是的,没错。您需要在每台机器上配置。您可以通过一些网络共享(如NFS)来缓解此问题。或者,您可以切换到分布式的东西,如FTP或键值存储,如Redis,其中每个容器根据环境变量请求其配置。我明白了,这也是一个很好的解决方案。非常感谢你的帮助!