我已经使用Azure应用程序服务从容器注册表中的docker容器部署了一个Python web应用程序。在我的应用程序中,我使用dotenv加载机密,并在本地运行docker run --env-file=.env my-container
来传递.env
变量,但我真的不知道在部署到Azure时如何执行
我使用dotenv的方式如下:
import os
from dotenv import load_dotenv
load_dotenv()
SERVER = os.getenv("SERVER_NAME")
DATABASE = os.getenv("DB_NAME")
USERNAME = os.getenv("USERNAME")
PASSWORD = os.getenv("PASSWORD")
PORT = os.getenv("PORT", default=1433)
DRIVER = os.getenv("DRIVER")
如何让容器获取.env变量
我已经将这些秘密添加到Azure Key Vault,但我不确定如何将它们传递到容器
要从密钥库中提取机密并将其用作应用程序中的环境变量,请使用密钥库引用,如下所述: https://docs.microsoft.com/en-us/azure/app-service/app-service-key-vault-references
然后只需将引用添加到应用程序设置中。例如:
就这样。无需修改dotenv代码来执行任何特殊操作,因为应用程序设置已经被应用程序服务作为环境变量注入到应用程序中
不要忘记将您的应用程序服务实例(托管标识)添加到密钥库的访问策略中,否则这些都不起作用- https://docs.microsoft.com/en-us/azure/app-service/app-service-key-vault-references#granting-your-app-access-to-key-vault
关于向Dockerfile传递变量,请检查我的答案here
请在from之后添加参数
然后像这样运行它
在从KeyVault获取值方面,您可以使用Azure Key Vault task
请注意,此任务创建的by deault变量被标记为机密,因此它们不会映射到环境变量
You can still try to use your approach but first you need to map it.
相关问题 更多 >
编程相关推荐