Развертывание с помощью Docker Compose в службу приложений Azure с несколькими контейнерами из разных источников

#azure #docker #docker-compose #azure-web-app-service #azure-appservice

#azure #docker #docker-compose #azure-web-app-service #azure-appservice

Вопрос:

У меня есть файл docker-compose.yml, который создается на этапе сборки в Azure Devops. Этап сборки работает хорошо, и я вижу, как создается файл docker-compose.yml. Для меня это имеет смысл.

Однако для запуска одной из служб требуется обычный образ docker, а другая служба — это та, которую я создал и размещаю в своем реестре контейнеров Azure.

Файл docker compose выглядит следующим образом:

 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'
 

Когда я помещаю это в службу приложений Azure с помощью вкладки Docker Compose, мне нужно выбрать вкладку image — либо 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, она будет развернута, но не будет развернута другая служба.

Кто-нибудь знает, почему служба не запускается?

Ответ №1:

Что ж, есть две проблемы, которые я нахожу в вашем файле docker-compose для веб-приложения Azure.

Одна из проблем заключается в том, что Azure Web App поддерживает настройку только одного хранилища изображений в файле docker-compose. Это означает, что вы можете настроить только Docker Hub или ACR, а не оба.

Другая проблема заключается в том, что Azure Web App не поддерживает опцию сборки в файле docker-compose. Смотрите подробности здесь.

В соответствии со всем вышесказанным, я предлагаю вам создать все свои пользовательские изображения и отправить их в ACR и использовать только ACR.

Комментарии:

1. В конечном итоге я скопировал репозиторий docker hub в ACR, поскольку решил, что не смогу выполнить развертывание с обоими. В конечном счете, похоже, что служба приложений Azure на самом деле не может поддерживать немного сложный файл docker-compose.yml, поэтому я сбросил его и нашел способ использования экземпляров контейнеров Azure и развертывания через командную строку (потому что нет пользовательского интерфейса для выполнения docker-compose. yml здесь тоже). Я не слишком впечатлен тем, как Azure управляет многоконтейнерными материалами. Спасибо, что нашли время ответить.