如何在 Azure Web App for Containers 中挂载 Docker 卷?

3
我将尝试在Azure应用服务中运行KrakenD镜像。
KrakenD需要将json配置文件krakend.json放置在/etc/krakend/目录下(KrakenD镜像基于Linux Alpine)。
我创建了一个Web App容器,并使用以下docker-compose文件:
version: "3"
services:
  krakend:
    image: devopsfaith/krakend:latest
    volumes:
      - ${WEBAPP_STORAGE_HOME}/site/krakend:/etc/krakend
    ports:
      - "8080:8080"
    restart: always

添加了一个存储账户和一个Blob容器,用于上传样例kraken.json文件在此输入图片描述

在应用程序配置中,我添加了一个路径映射,如下所示:

enter image description here

但看起来卷没有正确挂载。

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

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

附加问题

  1. 在存储装载中,“挂载路径”是什么意思?- 我在那里放置了值/krankend

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

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

所以我按类比做了,尝试了所有三个可能的路径。

${WEBAPP_STORAGE_HOME}/site/wwwroot/krakend
${WEBAPP_STORAGE_HOME}/site/krakend
${WEBAPP_STORAGE_HOME}/krakend

但是没有运气 - 仍然出现错误

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

2个回答

9

最终使用以下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

volume1是一个blob存储,挂载如下所示:

enter image description here


我在使用Docker Compose在Azure App Service上设置Envoy代理时遇到了同样的问题,这篇文章对我很有帮助。非常感谢! - Sandy
仍处于预览状态。 - Quentin Merlin

0

这对我没有用。我得到了Bind mount must start with ${WEBAPP_STORAGE_HOME}.

这个可以用。docker-compose.yml

version: "3"
services:

  backend:
    image: xxxx
    ports:
      - 80:80
    volumes:
      - vol1:/var/www/html/public

volumes: 
   vol1:
      driver: local

存储卷定义:

  • 名称:vol1
  • 配置:基础版
  • 存储账户:...
  • 存储容器:...
  • 挂载路径:/var/www/html/public

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接