使用 Docker 和文件共享在 Azure 应用服务中部署元数据库

Deploy Metabase in Azure App Service with Docker and File Share

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

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

我正在关注此文档: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 应用服务中的正确位置。

你们有什么想法吗?

非常感谢!

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

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 文件设置环境变量并挂载文件共享。 Here 是 docker-compose 的示例。我更推荐 docker-compose 文件。