2

出于测试目的,我在测试管道中创建并运行了一个 Azurite docker 映像。我希望在 Azurite 启动后自动创建 blob 容器,因为它会简化事情。

有什么好的方法可以实现这一目标吗?

对于我们使用的 Postgres 映像,我们可以指定一个在启动时运行的 init.sql。如果 Azurite 也有类似的东西,那就太棒了。

4

1 回答 1

0

我通过创建自定义 docker 映像并通过运行状况检查执行 azure-cli 工具解决了这个问题。肯定会有更好的解决方案,如果有人发布更好的解决方案,我会更新接受的答案。

更详细

在启动时创建所需数据的解决方案是运行我自己的脚本。我选择从我在 docker-compose 中定义的健康检查中触发脚本。它所做的是使用 azure cli 工具创建一个容器,然后验证它是否存在。

剧本:

AZURE_STORAGE_CONNECTION_STRING="UseDevelopmentStorage=true"
export AZURE_STORAGE_CONNECTION_STRING
az storage container create -n images
az storage container show -n images
exit $?

但是,azure 镜像是基于 alpine 的,它没有 apt,所以安装 azure cli 有点棘手。所以我反其道而行之,并将我的形象建立在mcr.microsoft.com/azure-cli:latest. 完成后,我像这样安装了 Azurite:

RUN apk add npm
RUN npm install -g azurite --silent

剩下的就是实际运行 azurite,有关详细信息,请参阅官方的 azurite dockerfile。

可以在没有 azure-cli 的情况下执行此操作,而使用 curl 代替(并且不必使用 azure-cli docker 映像)。然而,让身份验证标头正常工作有点复杂,因此使用 azure-cli 更容易。

于 2021-08-25T11:27:04.543 回答