如何在 Azure Web App 中为容器安装 docker 卷?

Art*_*tiy 3 azure azure-storage docker-compose krakend

我正在尝试在 Azure 应用服务中运行 KrakenD 映像。

KrakenD 需要将 json 配置文件 krakend.json 放入 /etc/krakend/(KrakenD 映像基于 Linux Alpine

我使用以下 docker-compose 文件为容器创建了 Web App:

version: "3"
services:
  krakend:
    image: devopsfaith/krakend:latest
    volumes:
      - ${WEBAPP_STORAGE_HOME}/site/krakend:/etc/krakend
    ports:
      - "8080:8080"
    restart: always
Run Code Online (Sandbox Code Playgroud)

添加了带有 blob 容器的存储帐户,其中上传了示例 kraken.json 文件 在此处输入图片说明

在应用程序配置中,我添加了一个这样的路径映射:

在此处输入图片说明

但看起来卷没有正确安装

2019-11-15 12:46:29.368 错误 - krakend_krakend_0_3032a936 的容器创建失败,出现 System.AggregateException,发生一个或多个错误。(Docker API 响应状态码=InternalServerError, response={"message":"invalid volume specification: ':/etc/krakend'"} )(Docker API 响应状态码=InternalServerError, response={"message":"无效的卷规范:':/etc/krakend'"}) InnerException: Docker.DotNet.DockerApiException,Docker API 响应状态码=InternalServerError,响应={"message":"无效的卷规范:':/etc/krakend' "}

2019-11-15 12:46:29.369 错误 - 多容器单元未成功启动

其他问题

  1. 存储挂载中的挂载路径是什么意思?- 我把价值放在那里/krankend

  2. 他们将其指定为的文档中,卷定义以 ${WEBAPP_STORAGE_HOME} 开头

    卷: - ${WEBAPP_STORAGE_HOME}/site/wwwroot:/var/www/html

所以我通过类比并尝试了所有 3 条可能的路径

${WEBAPP_STORAGE_HOME}/site/wwwroot/krakend
${WEBAPP_STORAGE_HOME}/site/krakend
${WEBAPP_STORAGE_HOME}/krakend
Run Code Online (Sandbox Code Playgroud)

但没有运气 - 仍然收到错误

错误解析配置文件:'/etc/krakend/krakend.json'(打开):没有这样的文件或目录

Art*_*tiy 7

最终通过以下 docker-compose 文件解决了这个问题

version: "3"
services:
  krakend:
    image: devopsfaith/krakend:latest
    volumes:
      - volume1:/etc/krakend
    environment:
     WEBSITES_ENABLE_APP_SERVICE_STORAGE: TRUE
    ports:
      - "8080:8080"
    restart: always
Run Code Online (Sandbox Code Playgroud)

其中 volume1 是一个 blob 存储,安装如下

在此处输入图片说明