Azure Web 应用程序在 docker-compose 中使用 WEBAPP_STORAGE_HOME 变量

标签 azure docker azure-web-app-service devops

我正在尝试设置一个网络应用程序,该应用程序通过文件共享到存储帐户来实现持久存储。

我遵循 Microsoft 文档中的各种指南,并且成功完成了大部分工作,我的应用程序具有持久存储。但现在,我想做的,是将卷映射到我的存储帐户。

我看到这个变量 ${WEBAPP_STORAGE_HOME} 可以在我的 docker-compose 中使用。

我的问题是,这个变量的值是多少? docs状态:

${WEBAPP_STORAGE_HOME} is an environment variable in App Service that is mapped to persistent storage for your app.

我觉得这有点含糊。它是否知道自动映射我的路径映射?如果我有多个路径映射怎么办?我应该在配置边栏选项卡的应用程序设置中设置该值吗?如果是这样,我需要指定什么,安装路径?

除此之外,我看到它的用法如下:

version: '3.3'

services:
   wordpress:
     image: mcr.microsoft.com/azuredocs/multicontainerwordpress
     volumes:
      - ${WEBAPP_STORAGE_HOME}/site/wwwroot:/var/www/html
     ports:
       - "8000:80"
     restart: always

我在 docker-compose 中与命名卷一起使用。我认为没有必要指定类似的东西?

更新 在 @Jason Pan 的回答之后,我试着玩了一下这个坐骑。

我成功地使用以下 docker-compose 在应用服务上实现了持久存储:

# ... lines skipped for brevity
    volumes:
      - mysql-data:/var/lib/mysql

volumes:
  mysql-data:
    driver: local

但我想将数据保留在存储帐户上。我发现这可以通过以下方式实现:AppService/Configuration/Path Mappings

我的 Docker Compose

# ...
    volumes:
      - MyMountedPath:/var/lib/mysql

在这个 docker-compose 文件中,我有我的应用程序和 MySQL 镜像:准确地说是 mysql:8

我安装的路径如下: 名称:MyMountedPath;安装路径:/usr/local/mysql;类型:Azure 文件...

我在日志中收到以下错误:

2021-04-08T11:02:06.790578922Z chown: changing ownership of '/var/lib/mysql/': Operation not permitted

2021-04-08T11:02:12.785079208Z 2021-04-08 11:02:12+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.23-1debian10 started.

由于它适用于第一种方法,我怀疑我的路径映射的定义方式存在一些问题。这让我产生了更多问题:

  • 我的装载路径是否需要存在于应用服务文件系统上?如果不是,我可以定义类似: /foo/bar 吗?
  • 如果我有一个挂载路径名称 MyMountedPath,我可以在 docker-compose 文件中指定类似的内容
volumes:
  - MyMountedPath/foo:/something

基本上,在安装的路径中导航?

  • 我需要将此路径挂载到我的存储帐户的文件存储中吗?或者应用服务需要存储某些内容时会创建此路径吗?

最佳答案

Example: In the App Service properties, I mounted an Azure File Share and gave the name

MyExternalStorage

In the docker compose configuration I have to set
volumes:
- MyExternalStorage:/var/www/html/contao

感谢TeddyDubois29的回答,希望也能帮到你。

Web App Docker Compose Persistent Storage

如下所示

在应用服务上安装 Azure 文件时,会为安装选择一个名称。

此名称是配置文件中 Volumes 参数的引用。

示例:

在应用服务属性中,我安装了 Azure 文件共享并命名为 MyExternalStorage

在 docker compose 配置中我必须设置

数量:

MyExternalStorage:/var/www/html/contao

关于Azure Web 应用程序在 docker-compose 中使用 WEBAPP_STORAGE_HOME 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66993860/

相关文章:

Azure DevOps - 使用 GUI 而不是 YAML 来编辑构建管道

css - 在Docker容器中编辑AWX CSS

自定义容器中的 Azure Web App,环境变量未从应用服务传播到容器

Azure Datalake 本地或混合堆栈

asp.net - .Net Core 2.0 - 获取 AAD 访问 token 以与 Microsoft Graph 一起使用

azure - 使用 BICEP 部署资源时,是否有办法附加标签而不是替换标签?

linux - 嵌套脚本在 Docker 镜像中无法找到彼此

docker - 为什么Dockerfile RUN打印回显选项?

visual-studio-2015 - 如何恢复与发布配置文件关联的密码?

asp.net-mvc - Visual Studio 2015 在 Web 部署期间找不到 Azure 云上的现有 Web 应用程序