如何将本地 Docker 映像部署到 Azure 应用服务?

Posted

技术标签:

【中文标题】如何将本地 Docker 映像部署到 Azure 应用服务?【英文标题】:How to Deploy local Docker image to Azure app services? 【发布时间】:2021-12-06 06:00:31 【问题描述】:

在不使用任何 Docker 注册表集成的情况下创建了 Azure 应用服务 Web 应用。

我想实现以下目标。

1] 在我的 Linux 机器上创建、标记图像 2] 使用以下方式将本地 Docker 映像部署到应用服务 Web 应用

az webapp config container set --name springboot-docker-helloworld-app --resource-group SpringBoot --docker-custom-image-name org/dockerspringtboot-metinv:latest

但它不起作用。

是否可以将本地 Docker 映像部署到 Azure 应用服务 Web 应用?

【问题讨论】:

【参考方案1】:

您需要将容器映像推送到 Azure 容器注册表,您的 Azure Web 应用可以从中提取映像。

您可以使用 Azure CLI 执行此操作,步骤如下:

$ az acr create --resource-group your_rg \
                --name yourAcrName --sku Basic 

# login to the container registry locally
$ az acr login --name yourAcrName 

# update the container registry to use admin-enabled 
# https://docs.microsoft.com/en-us/azure/container-registry/container-registry-authentication?tabs=azure-cli#admin-account
$ az acr update -n yourAcrName --admin-enabled true

# tag your local image to the container registry
$ docker tag dockerspringtboot-metinv:latest yourAcrName/dockerspringtboot-metinv:latest

# push image to your container registry
$ docker push yourAcrName/dockerspringtboot-metinv:latest

然后您可以创建应用服务计划并部署指定使用您的容器注册表的 Web 应用。

$ az appservice plan create -g your-rg \
                            -n your-app-plan \
                            --sku B1 --is-linux 

# deploy your container as an app in the created App Service plan
$ az webapp create -g your-rg \
                   -p your-app-plan \
                   -n dockerspringtboot \
                   -i yourAcrName/dockerspringtboot-metinv:latest

【讨论】:

谢谢。是否可以将本地 Docker 映像部署到 Azure 应用服务 Web 应用?我不想从任何容器注册表中提取/使用任何容器注册表,例如 ACR、Docker 集线器等。 因为你的 webapp 会停止和启动,所以它需要一个注册表,每次都可以从中拉取容器镜像。这意味着你不能只是将你的镜像本地推送到应用服务并让它继续运行,你必须在 Azure 上或通过 DockerHub 创建一个注册表。您是否有不想使用容器注册表的特殊原因? Azure 允许您创建一个私有注册表,使您的图像保持私有。 谢谢。我想避免依赖特定的注册表。从我的 devops 管道中,我想从任何注册表所需的注册表中提取我的构建代理,并将该本地副本直接推送到 App 服务... 那么我认为不可能部署这样的 Azure 应用服务应用程序。您也许可以在没有注册表的情况下运行 azure 容器实例(请参阅此example using docker CLI)。

以上是关于如何将本地 Docker 映像部署到 Azure 应用服务?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Azure Pipeline 将 Docker 映像“推送”到 Azure 容器注册表?

在 Visual Studio 中使用相同的 docker 文件构建 docker 映像的 Azure Pipeline 失败

如何将多个docker映像部署到单个虚拟机

如何将 mongoDB Docker 映像部署到 Elastic Beanstalk?

Azure 应用服务 Docker Linux 部署 - 我的文件在哪里?

如何使用Docker save将本地映像备份到文件?