Exercício - Criar um arquivo Docker Compose para orquestração

Concluído

A empresa de equipamentos externos da Contoso tem dois serviços que gostaria de agrupar para criar e implantar como uma única unidade. A empresa decide usar o Docker Compose para criar os serviços juntos.

Neste exercício, você cria um arquivo YAML do Docker Compose. Em seguida, use o utilitário Docker Compose para criar as imagens de contêiner do Docker e executá-las.

Conecte-se ao espaço de código

Se você se desconectou do espaço de código usado no exercício anterior, reconecte-se agora:

  1. Abra um navegador e vá para o repositório eShopLite.
  2. Selecione Código e, em seguida, selecione a guia Codespaces .
  3. Selecione o espaço de código que você criou no exercício anterior. O GitHub abre o espaço de código.
  4. Vá para o diretório /dotnet-docker .

Criar o arquivo Docker Compose

Use o arquivo docker-compose para configurar imagens para os serviços back-end e front-end:

  1. Na pasta dotnet-docker do codespace, abra o arquivo chamado ./dotnet-docker/docker-compose.yml. Este ficheiro está vazio.

  2. Adicione o seguinte código ao arquivo 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"
    

    Este código faz várias coisas:

    • Ele cria o site front-end e nomeia-o frontend.
    • O código define uma variável de ambiente para o site: ProductEndpoint=http://backend:8080. Este código é como o serviço front-end encontra o serviço back-end de Produtos.
    • O código abre uma porta e declara que depende do serviço de back-end.
    • O serviço de back-end chamado back-end é criado em seguida.
    • O último comando especifica qual porta abrir.
  3. Em comparação, o arquivo docker-compose.yml que você precisaria usar se tivesse 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"
    

    O código é quase idêntico. A única diferença é a necessidade de ter as fases de compilação que apontam para cada dockerfile.

Crie as imagens e execute os contêineres

Agora, use o Docker Compose para criar e iniciar componentes front-end e back-end.

  1. Para criar as imagens de contêiner com suporte a contêiner .NET, selecione a guia Terminal e execute o seguinte comando. Observe que, se seu aplicativo ainda estiver em execução, primeiro feche com CTRL+C.

    dotnet publish /p:PublishProfile=DefaultContainer
    
  2. Para iniciar o site front-end e a API da Web back-end, execute este comando:

    docker compose up
    
  3. Alguma saída aparece e, em seguida, o site e a API da Web estão em execução. Você deve ver uma saída semelhante a este exemplo:

    [+] 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
    

    Uma captura de tela da guia de portas do espaço de código.

  4. Para testar o serviço front-end, selecione a guia Portas . Em seguida, à direita do endereço local da porta Front-End , selecione o ícone de globo. O navegador exibe a página inicial.

  5. Selecione Produtos. O catálogo mostra a mercadoria da Contoso.

    Uma captura de tela dos produtos da loja virtual eSHopLite.