Exercício - Criar um arquivo Docker Compose para orquestração
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:
- Abra um navegador e vá para o repositório eShopLite.
- Selecione Código e, em seguida, selecione a guia Codespaces .
- Selecione o espaço de código que você criou no exercício anterior. O GitHub abre o espaço de código.
- 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:
Na pasta dotnet-docker do codespace, abra o arquivo chamado ./dotnet-docker/docker-compose.yml. Este ficheiro está vazio.
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.
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.
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
Para iniciar o site front-end e a API da Web back-end, execute este comando:
docker compose up
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
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.
Selecione Produtos. O catálogo mostra a mercadoria da Contoso.