【问题标题】:ASPNETCORE_ENVIRONMENT env variables pass in docker and kubernetesASPNETCORE_ENVIRONMENT 环境变量传入 docker 和 kubernetes
【发布时间】:2020-09-16 18:46:34
【问题描述】:

我们有 aspnet core 2.1 应用程序,我们正在使用 Azure Pipeline 来构建和发布该应用程序。

我们正在使用 docker build 在构建管道中构建镜像,并在发布管道中将应用程序部署到 Kubernetes。

现在我们想构建一次映像,然后分 3 个阶段(开发、暂存和生产)将映像部署到 Kubernetes。

我们使用 ASPNETCORE_ENVIRONMENT 环境变量来区分阶段。我们尝试在 DockerFile 和 Kubernetes deployment.azure.yaml 文件中使用这个变量。另外,我们在应用的launchsettings.json中配置了Docker Profile。

“Docker”: {
    “commandName”: “Docker”,
        “environmentVariables”: {
        “ASPNETCORE_ENVIRONMENT”: “”,
        “ASPNETCORE_URLS”: “”,
        “DOTNET_ENVIRONMENT”: “Staging”
    }
},

但是,环境变量仍然没有按预期工作。每次我们将应用程序部署到 Kubernetes 时,它都会使用 Development 变量。

请提出更好的计划或更改以实现“一次构建,到处部署”策略。

谢谢, 穆格什

【问题讨论】:

  • 以下回复你看了吗?有用吗?

标签: azure-pipelines


【解决方案1】:

抱歉,在您的问题中,您缺少很多细节,例如 DOCKERFILE 或 kubernetes yaml 配置文件。但是,根据您写的内容,我相信 article 是您的答案。

简而言之,它会稍微远离 appsettings 文件,因为它们可能包含机密,因此它们不应该进入 docker 映像。取而代之的是,您将秘密作为参数传递给掌舵图。因此绝对是Build Once, Deploy Everywhere 方法。

【讨论】:

  • 我的 DockerFile 如下: FROM microsoft/dotnet:latest COPY 。 . WORKDIR /src/testService RUN ["dotnet", "restore"] RUN dotnet build -c Release -o /app --no-restore #RUN export ASPNETCORE_ENVIRONMENT=Staging ENV ASPNETCORE_URLS //*:5000 EXPOSE 5000/tcp ENTRYPOINT [" dotnet", "run"] 我尝试使用 ENTRYPOINT ["dotnet", "run", "--launch-profile=Staging"] 但它不起作用。我正在使用 Azure Devops CI-CD Pipeline 构建 docker 映像并在 kubernetes 上运行该映像。
猜你喜欢
  • 2018-09-18
  • 2018-02-27
  • 2018-12-02
  • 1970-01-01
  • 2018-06-13
  • 2020-12-26
  • 2021-03-20
  • 2020-12-07
  • 1970-01-01
相关资源
最近更新 更多