Упражнение. Создание файла Docker Compose для оркестрации

Завершено

Компания contoso на открытом воздухе имеет две службы, которые они хотели бы объединить для сборки и развертывания как единого подразделения. Компания решает использовать Docker Compose для создания служб вместе.

В этом упражнении вы создадите файл Docker Compose YAML. Затем вы используете служебную программу Docker Compose для сборки образов контейнеров Docker и их запуска.

Подключение к пространству кода

Если вы отключились от пространства кода, используемого в предыдущем упражнении, повторно подключитесь:

  1. Откройте браузер и перейдите в репозиторий eShopLite.
  2. Выберите "Код" и перейдите на вкладку "Пространства кода".
  3. Выберите пространство кода, созданное в предыдущем упражнении. GitHub открывает пространство кода.
  4. Перейдите в каталог /dotnet-docker .

Создание файла Docker Compose

Используйте файл docker-compose для настройки образов для внутренних и интерфейсных служб:

  1. В папке dotnet-docker пространства кода откройте файл с именем ./dotnet-docker/docker-compose.yml. Этот файл пуст.

  2. Добавьте следующий код в файл docker-compose.yml:

    version: '3.4'
    
    services: 
    
        frontend:
            image: store:latest
            environment: 
                - ProductEndpoint=http://backend:8080
            ports:
                - "32000:8080"
            depends_on: 
                - backend
        backend:
            image: products:latest
            ports: 
                - "32001:8080"
    

    Этот код делает несколько вещей:

    • Он создает внешний веб-сайт и называет его внешним интерфейсом.
    • Код задает переменную среды для веб-сайта: ProductEndpoint=http://backend:8080 Этот код заключается в том, как интерфейсная служба находит серверную службу Products.
    • Код открывает порт и объявляет, что он зависит от внутренней службы.
    • Серверная служба с именем серверной части создается далее.
    • Последняя команда указывает, какой порт открыть.
  3. Для сравнения, docker-compose.yml-файл, который необходимо использовать, если у вас были dockerfiles:

    version: '3.4'
    
    services: 
    
        frontend:
            image: storeimage
            build:
                context: .
                dockerfile: ./Store/Dockerfile
            environment: 
               - ProductEndpoint=http://backend:8080
            ports:
               - "32000:8080"
            depends_on: 
               - backend
        backend:
            image: productservice
            build: 
                context: .
                dockerfile: ./Products/Dockerfile
            ports: 
               - "32001:8080"
    

    Код почти идентичен. Единственное различие заключается в том, что необходимо иметь этапы сборки, указывающие на каждый dockerfile.

Создание образов и запуск контейнеров

Теперь используйте Docker Compose для создания и запуска интерфейсных и внутренних компонентов.

  1. Чтобы создать образы контейнеров с поддержкой контейнеров .NET, перейдите на вкладку "Терминал " и выполните следующую команду. Обратите внимание, что если приложение по-прежнему запущено, сначала закройте клавиши CTRL+C.

    dotnet publish /p:PublishProfile=DefaultContainer
    
  2. Чтобы запустить интерфейсный веб-сайт и внутренний веб-API, выполните следующую команду:

    docker compose up
    
  3. Отображаются некоторые выходные данные, а затем выполняется веб-сайт и веб-API. Вы должны увидеть выходные данные, аналогичные этому примеру:

    [+] Running 2/0
        ✔ Container finished-files-backend-1   Created                                                                                   0.0s 
        ✔ Container finished-files-frontend-1  Created                                                                                   0.0s 
    Attaching to backend-1, frontend-1
    ...
    backend-1   | info: Microsoft.Hosting.Lifetime[0]
    backend-1   |       Hosting environment: Production
    backend-1   | info: Microsoft.Hosting.Lifetime[0]
    backend-1   |       Content root path: /app
    

    Снимок экрана: вкладка портов пространства кода.

  4. Чтобы проверить интерфейсную службу, перейдите на вкладку "Порты ". Затем справа от локального адреса для порта переднего плана выберите значок глобуса. В браузере отображается домашняя страница.

  5. Выберите Продукты. В каталоге отображаются товары Компании Contoso.

    Снимок экрана: продукты веб-магазина eSHopLite.