ロードバランサの背後にあるDockerコンテナ(ドッキング用のコンテナ)上で実行されている.NET Core 2.0 Web APIがあります。私は顧客ごとに1つ、複数のコンテナを持つことでWeb APIの規模を拡大したいと考えています。そのことを念頭に置いて、顧客の詳細を分けて抽象化するために構成を変更しなければならなかったので、顧客ごとにアプリの設定を行うことができます。私はappsettings.CustomerA.config
を持つことになりそうすれば、appsettings.CustomerB.config
など.netお客様のアプリケーション設定を持つコアドッカー画像
私の一般的なDockerfileは次のとおりです。すべての罰金ですが、私は知らないが、私が指定したところ、私は、顧客ごとに1つずつ異なるDockerfilesを持つことができるかどうかである
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"]
顧客と環境を混在させているので、それは良い習慣であるかどうかは確かではありませんが、それと同時に、その環境は特定の顧客のためのものです)、または私がコピーする別の設定ファイルを作成する必要があるかどうか顧客に応じて?
Microsoftのドッカー文書https://docs.docker.com/engine/examples/dotnetcore/#create-a-dockerfile-for-an-aspnet-core-applicationからドッカーテンプレートを取得し、環境を自分で追加しました。ヘルプ
これは本当にありがとうございます。次に、マウントを使用するようにコンテナを設定します。私が欲しいものを達成する最も敏感な方法と思われます。私は群れを使用したい場合、これがどのように自動化できるのだろうか。計画はワーカーノードにデプロイされたコンテナを取得することですが、マウントを使用することを選択した場合は、顧客の設定を関連するノードに個別に展開する必要があります。私は正しい? –
はい、そうです。各マシンに設定が必要です。 NFSなどのネットワーク共有を行うことで、この問題を緩和することができます。また、FTPやRedisなどのキー値ストアなど、環境変数に基づいて各コンテナが構成を要求するような、分散したものに切り替えることもできます。 – yamenk
私はそれも良い解決策だと思う。ご協力いただき誠にありがとうございます! –