Tutorial: Criar uma imagem de contentor para implementação para Azure Container Instances

O Azure Container Instances permite a implementação de contentores do Docker na infraestrutura do Azure sem que seja necessário aprovisionar máquinas virtuais ou adotar serviços de nível superior. Neste tutorial, vai compactar uma aplicação Web pequena em Node.js e numa imagem de contentor que pode ser executada com o Azure Container Instances.

Neste artigo, a parte um da série, vai:

  • Clonar o código-fonte da aplicação do GitHub
  • Criar uma imagem de contentor a partir da origem de aplicação
  • Testar a imagem num ambiente local do Docker

Nas partes dois e três do tutorial, vai carregar a imagem para o Azure Container Registry e, em seguida, vai implementá-la no Azure Container Instances.

Antes de começar

Tem de cumprir os requisitos seguintes para concluir este tutorial:

CLI do Azure: Tem de ter a CLI do Azure versão 2.0.29 ou posterior instalada no computador local. Executar az --version para localizar a versão. Se precisar de instalar ou atualizar, veja Instalar a CLI do Azure.

Docker: Este tutorial pressupõe conhecimentos básicos dos principais conceitos do Docker, como contentores, imagens de contentor e comandos básicos do docker. Para um manual de noções básicas do Docker e do contentor, veja a descrição geral do Docker.

Docker: para concluir este tutorial, precisa do Docker instalado localmente. O Docker oferece pacotes que configuram o ambiente do Docker no macOS, no Windows e no Linux.

Importante

Uma vez que a shell do Azure Cloud não inclui o daemon do Docker, tem de instalar a CLI do Azure e o Motor do Docker no seu computador local para concluir este tutorial. Não pode utilizar o Azure Cloud Shell para este tutorial.

Obter o código da aplicação

O exemplo de aplicação neste tutorial é uma aplicação Web simples criada em Node.js. A aplicação serve uma página HTML estática e é semelhante à captura de ecrã seguinte:

Tutorial de aplicação mostrada no browser

Utilizar o Git para clonar o repositório do exemplo de aplicação:

git clone https://github.com/Azure-Samples/aci-helloworld.git

Também pode transferir o arquivo ZIP a partir diretamente do GitHub.

Criar a imagem do contentor

O Dockerfile no exemplo de aplicação mostra como é que o contentor é criado. Começa com uma imagem Node.js oficial baseada em Alpine Linux, uma pequena distribuição adequada para utilização com contentores. Em seguida, copia os ficheiros da aplicação para o contentor, instala as dependências com o Node Package Manager e, por fim, inicia a aplicação.

FROM node:8.9.3-alpine
RUN mkdir -p /usr/src/app
COPY ./app/* /usr/src/app/
WORKDIR /usr/src/app
RUN npm install
CMD node /usr/src/app/index.js

Utilize o comando docker build para criar a imagem de contentor e identifique-a como aci-tutorial-app:

docker build ./aci-helloworld -t aci-tutorial-app

O resultado do comando docker build é semelhante ao seguinte (truncado para legibilidade):

docker build ./aci-helloworld -t aci-tutorial-app
Sending build context to Docker daemon  119.3kB
Step 1/6 : FROM node:8.9.3-alpine
8.9.3-alpine: Pulling from library/node
88286f41530e: Pull complete
84f3a4bf8410: Pull complete
d0d9b2214720: Pull complete
Digest: sha256:c73277ccc763752b42bb2400d1aaecb4e3d32e3a9dbedd0e49885c71bea07354
Status: Downloaded newer image for node:8.9.3-alpine
 ---> 90f5ee24bee2
...
Step 6/6 : CMD node /usr/src/app/index.js
 ---> Running in f4a1ea099eec
 ---> 6edad76d09e9
Removing intermediate container f4a1ea099eec
Successfully built 6edad76d09e9
Successfully tagged aci-tutorial-app:latest

Utilize o comando docker images para ver a imagem incorporada:

docker images

A imagem que acabou de criar deve aparecer na lista:

docker images
REPOSITORY          TAG       IMAGE ID        CREATED           SIZE
aci-tutorial-app    latest    5c745774dfa9    39 seconds ago    68.1 MB

Executar o contentor localmente

Antes de implementar o contentor no Azure Container Instances, utilize docker run para executá-lo localmente e confirmar que funciona. O comutador -d permite que o contentor seja executado em segundo plano, ao passo que, com -p, pode mapear uma porta arbitrária do computador para a porta 80 do contentor.

docker run -d -p 8080:80 aci-tutorial-app

O resultado do comando docker run apresenta o ID do contentor em execução, caso o comando tenha sido executado com êxito:

docker run -d -p 8080:80 aci-tutorial-app
```output
a2e3e4435db58ab0c664ce521854c2e1a1bda88c9cf2fcff46aedf48df86cccf

Agora, navegue até http://localhost:8080 no browser para confirmar que o contentor está em execução. Deverá ver uma página Web semelhante à seguinte:

Executar a aplicação localmente no browser

Passos seguintes

Neste tutorial, criou uma imagem de contentor que pode ser implementada no Azure Container Instances e verificou que é executada localmente. Até agora, fez o seguinte:

  • Clonou a origem da aplicação a partir do GitHub
  • Criou uma imagem de contentor a partir da origem da aplicação
  • Testou o contentor localmente

Avance para o próximo tutorial da série para aprender a armazenar a imagem de contentor no Azure Container Registry: