在 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: Could not open /secrets/app.keystore.jks as a file, class path resource, or URL.

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

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

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

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

获取更多详细信息here

另一种方法是您可以将 Azure 存储装载到您的容器并将文件上传到存储。按照步骤 here.