繁体   English   中英

为 Azure 应用服务 Linux 上运行的容器创建卷

[英]Create volume for container running on Azure App Service Linux

我们有一个 SpringBoot 应用程序,它需要一个位于“/secrets/app.keystore.jks”的密钥库文件才能运行。

我们希望在 Azure 应用服务 Linux 实例上的容器中运行应用。 并且出于安全原因,我们不想在容器本身中包含“/secrets/app.keystore.jks”文件。 相反,我们设法将文件上传到应用服务上的“/home/site/wwwroot/secrets/”文件夹。

并且我们使用下面的命令来启动应用服务上的容器

docker run -d myacr.azurecr.io/myAPp:latest -p 80:80 --name myApp 
-e WEBSITES_ENABLE_APP_SERVICE_STORAGE=TRUE -v /home/site/wwwroot/secrets:/secrets

在应用服务的日志中,我们有错误:

java.lang.IllegalStateException: java.io.IOException: 无法将 /secrets/app.keystore.jks 作为文件、类路径资源或 URL 打开。

在我看来,卷没有设置,应用程序无法访问文件“/secrets/app.keystore.jks”

有谁知道如何设置卷以便容器中的应用程序可以访问主机上的文件?

有两种方法可以实现您的目的。 一种是将环境变量WEBSITES_ENABLE_APP_SERVICE_STORAGE设置为true ,您可以在 docker-compose 文件中将持久卷挂载到您的容器中,如下所示:

volumes:
  - ${WEBAPP_STORAGE_HOME}/site/wwwroot/secrets:/secrets

在此处获取更多详细信息。

另一种方法是将 Azure 存储挂载到容器并将文件上传到存储。 按照此处的步骤操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM