azure - Docker Https 与 Azure Key Vault 使用 DevOps 发布管道
问题描述
背景:
我正在从普通的应用程序服务计划提供身份验证服务器,并切换到将身份验证服务器作为 docker 容器提供服务。我使用 CI 与 dockerfile 和 azure-pipelines.yaml 将图像推送到注册表。这会触发我使用 Azure Web App on Container Deploy 任务部署的 CD。在我尝试根据 Authorize 属性验证我的 api 之前,这一切似乎都很好。看来,即使我使用的是启用了 https 的自定义域。生成的令牌仍然引用 http 而不是 https。
为了规避这一点,我尝试了添加配置文件或“docker-compose.yaml”。但是,当我这样做时,我的应用程序正在崩溃。所以我的两个问题是:
- 我是否正确运行它以在我的 docker 实例中使用 Https?
-另外,我如何正确地将密钥库机密传递给 docker compose?
这是我的yaml:
version: '3.4'
variables:
- group: VKVAPI
services:
webapp:
image: vkv.azurecr.io/vkvauth:latest
ports:
- '8000:80'
- '8001:443'
environment:
- ASPNETCORE_HTTPS_PORT=443
- 'ASPNETCORE_URLS=https://+;http://+'
- ASPNETCORE_Kestrel__Certificates__Default__Password=Variable!@#
- ASPNETCORE_Kestrel__Certificates__Default__Path=$(variable)
同样在我的日志流中,我得到:
2020-08-27T23:14:29.758256402Z: [ERROR] Unhandled exception. Interop+Crypto+OpenSslCryptographicException: error:2006D080:BIO routines:BIO_new_file:no such file
2020-08-27T23:14:29.758271702Z: [ERROR] at Interop.Crypto.CheckValidOpenSslHandle(SafeHandle handle)
2020-08-27T23:14:29.758398002Z: [ERROR] at Internal.Cryptography.Pal.OpenSslX509CertificateReader.FromFile(String fileName, SafePasswordHandle password, X509KeyStorageFlags keyStorageFlags)
2020-08-27T23:14:29.758404102Z: [ERROR] at System.Security.Cryptography.X509Certificates.X509Certificate..ctor(String fileName, String password, X509KeyStorageFlags keyStorageFlags)
2020-08-27T23:14:29.758408302Z: [ERROR] at System.Security.Cryptography.X509Certificates.X509Certificate2..ctor(String fileName, String password)
2020-08-27T23:14:29.758412302Z: [ERROR] at Microsoft.AspNetCore.Server.Kestrel.KestrelConfigurationLoader.LoadCertificate(CertificateConfig certInfo, String endpointName)
解决方案
我是否正确运行它以在我的 docker 实例中使用 Https?
通过 docker-compose 使用 HTTPS 运行 docker 容器没有问题。请参阅使用 docker-compose 启动具有 https 支持的容器的详细信息。
另外,我如何正确地将密钥库机密传递给 docker compose?
导致该错误的可能原因是 Azure Web App for Container 中支持的Docker Compose 选项不包含variables
. 因此,当您设置变量块并在其中使用变量时,就会导致错误。我建议你使用没有变量的绝对值。
推荐阅读
- php - 如何使密码验证功能与 $_POST 一起使用
- boost-asio - boost convinience 标头不包括必需的标头
- ajax - ajax Spring Liferay
- json - 将json映射提取到结构中的更好方法
- android-animation - 如何以编程方式更改 MotionLayout 中 KeyAttribute 的旋转
- linux - 使用 -exec cp 覆盖复制文件
- python - 如何在 Python 中比较两条 3D 曲线?
- android - HAXM 安装不会检测到启用的 VT-x
- google-compute-engine - Google Cloud Compute Engine 中的各种 SSH 方法有什么区别?
- c# - 在请求管道的分支中提供 SPA 时,我的 SPA 文件出现 404 错误。如何使我的静态文件可用于我的 SPA?