首页 > 解决方案 > 使用 Docker 和文件共享在 Azure 应用服务中部署元数据库

问题描述

我想通过 Docker 容器在 Azure App Service 中部署 Metabase。我确实将我的图像推送到 ACI 并将其发布到 Azure 应用服务中。元数据库在默认配置下运行良好。

但是,我想将 H2 db 文件存储到文件共享中,以便将我的配置(仪表板、问题、与元数据库相关的所有内容等)保存在持久存储中。

我正在关注此文档:https ://www.metabase.com/docs/latest/operations-guide/running-metabase-on-docker.html

在我的 Azure 应用服务中,我添加了一个文件共享: 在此处输入图像描述

然后我将以下命令添加到我的应用服务 -> 配置 -> 常规设置 -> 启动命令 -> -v ~/utpmv-fs-analytics:/utpmv-fs-analytics -e "MB_DB_FILE=/utpmv-fs-analytics /metabase.db" 在此处输入图像描述

我尝试了很多命令,但我总是得到类似的东西:

    ...
    2020-12-09T21:54:26.166Z INFO  - Pull Image successful, Time taken: 0 Minutes and 0 Seconds
    2020-12-09T21:54:26.210Z INFO  - Starting container for site
    2020-12-09T21:54:26.211Z INFO  - docker run -d -p 4569:3000 --name utpmv-as-analytics_0_ad156b06 -e WEBSITES_ENABLE_APP_SERVICE_STORAGE=true -e WEBSITE_SITE_NAME=utpmv-as-analytics -e WEBSITE_AUTH_ENABLED=False -e PORT=3000 -e WEBSITE_ROLE_INSTANCE_ID=0 -e WEBSITE_HOSTNAME=utpmv-as-analytics.azurewebsites.net -e WEBSITE_INSTANCE_ID=23939ad800d68063d3342e54a06273dd0c500ce73e1a03d19d89f03a71039aab utpmvcranalytics.azurecr.io/metabase:v1 -v ~/utpmv-fs-analytics:/utpmv-fs-analytics -e "MB_DB_FILE=/utpmv-fs-analytics/metabase.db"
    2020-12-09T21:54:26.211Z INFO  - Logging is not enabled for this container.Please use https://aka.ms/linux-diagnostics to enable logging to see container logs here.
    2020-12-09T21:54:29.007Z INFO  - Initiating warmup request to container utpmv-as-analytics_0_ad156b06 for site utpmv-as-analytics
    2020-12-09T21:54:36.717574375Z su: unrecognized option: e
    2020-12-09T21:54:36.720173722Z BusyBox v1.31.1 () multi-call binary.
    ...

看起来 -v 命令无法识别,这看起来很奇怪。我想知道我是否将命令添加到我的 Azure 应用服务中的正确位置。

你们有什么想法吗?

非常感谢你!

标签: azuredockerazure-web-app-servicedocker-volumemetabase

解决方案


首先,您需要知道“启动命令”是什么意思。这意味着命令需要在开始时在容器内执行。它将覆盖镜像的 Dockerfile 中的命令CMD。它不像您预期​​的那样工作:

docker run -v -v ~/utpmv-fs-analytics:/utpmv-fs-analytics -e "MB_DB_FILE=/utpmv-fs-analytics/metabase.db" utpmvcranalytics.azurecr.io/metabase:v1

我想你想挂载文件共享,然后MB_DB_file为数据库存储路径设置环境变量。为此,您可以在 Dockerfile 中设置环境变量,然后在 Azure 门户中装载文件共享。或者您可以使用 docker-compose 文件设置环境变量并挂载文件共享。是 docker-compose 的示例。我更推荐 docker-compose 文件。


推荐阅读