出于测试目的,我在测试管道中创建并运行了一个 Azurite docker 映像。我希望在 Azurite 启动后自动创建 blob 容器,因为它会简化事情。
有什么好的方法可以实现这一目标吗?
对于我们使用的 Postgres 映像,我们可以指定一个在启动时运行的 init.sql。如果 Azurite 也有类似的东西,那就太棒了。
出于测试目的,我在测试管道中创建并运行了一个 Azurite docker 映像。我希望在 Azurite 启动后自动创建 blob 容器,因为它会简化事情。
有什么好的方法可以实现这一目标吗?
对于我们使用的 Postgres 映像,我们可以指定一个在启动时运行的 init.sql。如果 Azurite 也有类似的东西,那就太棒了。
我通过创建自定义 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 更容易。