通过 Docker 使用来自不同来源的多个容器组合到 Azure 应用服务进行部署
Deploying via Docker Compose to Azure App Service with multiple containers from different sources
我有一个 docker-compose.yml 文件,它是从 Azure Devops 中的构建步骤创建的。构建步骤运行良好,我可以看到 docker-compose.yml 文件是如何生成的。这对我来说很有意义。
但是,它正在为 运行 一项服务寻找正常的 docker 图像,而另一项服务是我创建并托管在我的 Azure 容器注册表中的。
docker 撰写文件如下所示:
networks:
my-network:
external: true
name: my-network
services:
clamav:
image: mkodockx/docker-clamav@sha256:b90929eebf08b6c3c0e2104f3f6d558549612611f0be82c2c9b107f01c62a759
networks:
my-network: {}
ports:
- published: 3310
target: 3310
super-duper-service:
build:
context: .
dockerfile: super-duper-service/Dockerfile
image: xxxxxx.azurecr.io/superduperservice@sha256:ec3dd010ea02025c23b336dc7abeee17725a3b219e303d73768c2145de710432
networks:
my-network: {}
ports:
- published: 80
target: 80
- published: 443
target: 443
version: '3.4'
当我使用 Docker Compose 选项卡将其放入 Azure App Service 时,我必须 select 图像选项卡 - Azure Container Registry 或 Docker Hub - 我'我猜是前者,因为我与之相关。
当我启动服务时,我的日志显示:
2020-12-04T14:11:38.175Z ERROR - Start multi-container app failed
2020-12-04T14:23:28.531Z INFO - Starting multi-container app..
2020-12-04T14:23:28.531Z ERROR - Exception in multi-container config parsing: Exception: System.NullReferenceException, Msg: Object reference not set to an instance of an object.
2020-12-04T14:23:28.532Z ERROR - Start multi-container app failed
2020-12-04T14:23:28.534Z INFO - Stopping site ingeniuus-antivirus because it failed during startup.
这不是很有帮助,而且我认为 docker-compose.yml 文件没有任何问题。
如果我尝试仅部署来自 Azure 容器注册表的服务,它会部署,但不会部署其他服务。
有谁知道为什么服务没有启动?
好吧,我在您的 docker-compose Azure Web App 文件中发现了两个问题。
一个问题是Azure Web App只支持在docker-compose文件中配置一个镜像仓库。这意味着您只能配置 Docker 集线器或 ACR,不能同时配置。
另一个问题是 Azure Web App 不支持 docker-compose 文件中的构建选项。查看详情 here.
综上所述,我建议您可以创建所有自定义图像并将它们推送到 ACR 并仅使用 ACR。
我有一个 docker-compose.yml 文件,它是从 Azure Devops 中的构建步骤创建的。构建步骤运行良好,我可以看到 docker-compose.yml 文件是如何生成的。这对我来说很有意义。
但是,它正在为 运行 一项服务寻找正常的 docker 图像,而另一项服务是我创建并托管在我的 Azure 容器注册表中的。
docker 撰写文件如下所示:
networks:
my-network:
external: true
name: my-network
services:
clamav:
image: mkodockx/docker-clamav@sha256:b90929eebf08b6c3c0e2104f3f6d558549612611f0be82c2c9b107f01c62a759
networks:
my-network: {}
ports:
- published: 3310
target: 3310
super-duper-service:
build:
context: .
dockerfile: super-duper-service/Dockerfile
image: xxxxxx.azurecr.io/superduperservice@sha256:ec3dd010ea02025c23b336dc7abeee17725a3b219e303d73768c2145de710432
networks:
my-network: {}
ports:
- published: 80
target: 80
- published: 443
target: 443
version: '3.4'
当我使用 Docker Compose 选项卡将其放入 Azure App Service 时,我必须 select 图像选项卡 - Azure Container Registry 或 Docker Hub - 我'我猜是前者,因为我与之相关。
当我启动服务时,我的日志显示:
2020-12-04T14:11:38.175Z ERROR - Start multi-container app failed
2020-12-04T14:23:28.531Z INFO - Starting multi-container app..
2020-12-04T14:23:28.531Z ERROR - Exception in multi-container config parsing: Exception: System.NullReferenceException, Msg: Object reference not set to an instance of an object.
2020-12-04T14:23:28.532Z ERROR - Start multi-container app failed
2020-12-04T14:23:28.534Z INFO - Stopping site ingeniuus-antivirus because it failed during startup.
这不是很有帮助,而且我认为 docker-compose.yml 文件没有任何问题。
如果我尝试仅部署来自 Azure 容器注册表的服务,它会部署,但不会部署其他服务。
有谁知道为什么服务没有启动?
好吧,我在您的 docker-compose Azure Web App 文件中发现了两个问题。
一个问题是Azure Web App只支持在docker-compose文件中配置一个镜像仓库。这意味着您只能配置 Docker 集线器或 ACR,不能同时配置。
另一个问题是 Azure Web App 不支持 docker-compose 文件中的构建选项。查看详情 here.
综上所述,我建议您可以创建所有自定义图像并将它们推送到 ACR 并仅使用 ACR。