通过 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。