Tutorial: Criar uma imagem de contêiner para implantação em instâncias de contêiner do Azure
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. Para localizar a versão, execute az --version
. 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, você 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:
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. Você verá uma página da Web semelhante à seguinte captura de tela:
Próximos passos
Neste tutorial, criou uma imagem de contentor que pode ser implementada no Azure Container Instances e verificou que é executada localmente. Até agora, você concluiu as seguintes etapas:
- 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: