我使用Docker Desktop for Windows和VS Tools for Docker为我的ASP.NET Core创建了配置Staging
。当我运行配置Staging
时,env.EnvironmentName
继续作为Production
而不是Staging
。
在文件docker-compose.dev.staging.yml
我也将ASPNETCORE_ENVIRONMENT
设置为Staging
。但这也无济于事。当然,我需要把它放在其他地方,因为当我发布我想要Staging
得到Staging
EnvironmentName
。
environment:
- ASPNETCORE_ENVIRONMENT=Staging
我错过了什么?
更新
所以,看起来Visual Studio Tools for Docker
中有一个错误。它不尊重配置设置并抓取文件docker-compose.dev.release.yml
而不是docker-compose.dev.staging.yml
。因此,如果要将环境更改为staging
,则需要更改该实际文件。因此,在staging
中调试时,将以下内容添加到release
文件中:
environment:
- ASPNETCORE_ENVIRONMENT=Staging
一切都将与世界很好。在部署docker-compose
主文件时,您还需要这样做。很烦人,但你还要做什么?
此外,添加图像名称,如:
image: docker.appcatalyst.com:5000/symptom_checker_pam_cms:staging
然后,您将获得用于部署到舞台的staging
标记。希望这个错误很快就会修复。
更新2
现在,我了解Docker的工作原理。基本上你需要在docker-compose.yml
文件中传递环境变量。因此,在运行staging
环境的服务器上,您将添加我上面的内容,然后使用该yaml文件添加docker up
。至于你自己的机器,如果你想使用你的stage
设置,你需要添加/删除(或注释掉)环境设置。有点痛。希望VS Tools for Docker
修复此行为以进行调试。这会使编程变得更容易一些。
当VS运行docker-compose命令时,它会按顺序查找以下yaml文件:
我们还不支持用户定义的yaml文件,如docker-compose.dev.staging.yml。
ASPNETCORE_ENVIRONMENT已在docker-compose.override.yml中设置,其中是用于定义在本地计算机上运行应用程序的设置的位置。
environment:
- ASPNETCORE_ENVIRONMENT=Development
您可以在该文件中将Development更改为Staging。