Tutorial: criar um aplicativo do Docker com o Visual Studio Code

Este tutorial é o início de uma série de quatro partes que apresenta o Docker para ser usado com o VS Code (Visual Studio Code). Você aprenderá a criar e executar contêineres do Docker, persistir dados e gerenciar vários contêineres com o Docker Compose.

O VS Code oferece uma extensão do Docker que permite trabalhar com um serviço local do Docker Desktop. O Docker Desktop é executado no computador e gerencia os contêineres locais, que são ambientes virtualizados compactos que fornecem uma plataforma para criar e executar aplicativos. Eles não exigem o tamanho nem a sobrecarga de um sistema operacional completo.

Neste primeiro tutorial, você aprenderá a:

  • Crie um contêiner do Docker.
  • Compilar uma imagem de contêiner.
  • Iniciar um contêiner de aplicativo.

Pré-requisitos

O tutorial funciona com o Windows 10 ou posterior e o Docker Desktop configurado para usar contêineres do Linux.

Criar um contêiner

Um contêiner é um processo em seu computador. Ele é isolado de todos os outros processos no computador host. Esse isolamento usa namespaces de kernel e grupos de controle.

Um contêiner usa um sistema de arquivos isolado. Esse sistema de arquivos personalizado é fornecido por uma imagem de contêiner. A imagem contém tudo o que é necessário para executar um aplicativo, como todas as dependências, a configuração, os scripts e os binários. A imagem também contém outra configuração para o contêiner, como variáveis de ambiente, um comando padrão a ser executado e outros metadados.

Depois de instalar a extensão do Docker para VS Code, você pode trabalhar com contêineres no VS Code. Além dos menus de contexto no painel do Docker, você pode selecionar Terminal>Novo Terminal para abrir uma janela de linha de comando. Você também pode executar comandos em uma janela Bash. A menos que especificado, qualquer comando rotulado como Bash pode ser executado em uma janela Bash ou no terminal do VS Code.

  1. Defina o Docker como o modo de contêiner do Linux. Para alternar para contêineres do Linux se você estiver atualmente definido como contêineres do Windows, clique com o botão direito do mouse no ícone do Docker na bandeja do sistema enquanto a Área de Trabalho do Docker estiver em execução e escolha Alternar para contêineres do Linux.

  2. No VS Code, selecione Terminal>Novo Terminal.

  3. Na janela do terminal ou em uma janela Bash, execute este comando.

    docker run -d -p 80:80 docker/getting-started
    

    O comando contém os seguintes parâmetros:

    • -d Execute o contêiner no modo desanexado, em segundo plano.
    • -p 80:80 Mapeie a porta 80 do host para a porta 80 no contêiner.
    • docker/getting-started Especifica a imagem a ser usada.

    Dica

    Você pode combinar sinalizadores de caractere único para encurtar o comando completo. Por exemplo, o comando acima poderia ser escrito como:

    docker run -dp 80:80 docker/getting-started
    
  4. No VS Code, selecione o ícone do Docker à esquerda para exibir a extensão do Docker.

    Screenshot shows the Docker extension with the docker/getting-started tutorial running.

    A Extensão do VS Code para Docker mostra os contêineres em execução no computador. Você pode acessar logs de contêiner e gerenciar o ciclo de vida do contêiner, como parar e remover.

    O nome do contêiner, neste exemplo modest_shockley, é criado aleatoriamente. O seu terá um nome diferente.

  5. Clique com o botão direito do mouse no menu do docker/introdução para abrir um menu de contexto. Selecione Abrir no Navegador.

    Em vez disso, abra um navegador e insira http://localhost/tutorial/.

    Você verá uma página, hospedada localmente, sobre o DockerLabs.

  6. Clique com o botão direito do mouse no menu do docker/introdução para abrir um menu de contexto. Selecione Remover para remover esse contêiner.

    Para remover um contêiner usando a linha de comando, execute este comando para obter sua ID:

    docker ps
    

    Em seguida, pare e remova o contêiner:

    docker stop <container-id>
    docker rm <container-id>
    
  7. Atualize seu navegador. A página Introdução que você viu há um momento desapareceu.

Criar uma imagem de contêiner para o aplicativo

Este tutorial usa um aplicativo simples de lista de tarefas.

Screenshot shows the sample application with several items added and a text box and button to add new items.

O aplicativo permite criar itens de trabalho e marcá-los como concluídos ou excluí-los.

Para compilar o aplicativo, crie um Dockerfile. Um Dockerfile é um script baseado em texto, com instruções, que é usado para criar uma imagem de contêiner.

  1. Acesse o repositório Tutorial de Introdução ao Docker e selecioneCódigo>Baixar ZIP. Extraia o conteúdo para uma pasta local.

    Screenshot shows part of the Github site, with the green Code button and Download ZIP option highlighted.

  2. No VS Code, selecione Arquivo>Abrir Pasta. Navegue até a pasta aplicativo no projeto extraído e abra essa pasta. Você verá um arquivo chamado package.json e duas pastas chamadas src e spec.

    Screenshot of Visual Studio Code showing the package.json file open with the app loaded.

  3. Crie um arquivo chamado Dockerfile na mesma pasta que o arquivo package.json com o conteúdo a seguir.

    FROM node:20-alpine
    RUN apk add --no-cache python3 g++ make
    WORKDIR /app
    COPY . .
    RUN yarn install --production
    CMD ["node", "/app/src/index.js"]
    

    Observação

    Verifique se o arquivo não tem nenhuma extensão como .txt.

  4. No explorador de arquivos, à esquerda no VS Code, clique com o botão direito do mouse no Dockerfile e selecioneCompilar Imagem. Insira getting-started como a marca para a imagem na caixa de entrada de texto.

    Essa marca é um nome amigável para a imagem.

    Para criar uma imagem de contêiner na linha de comando, use o comando a seguir.

    docker build -t getting-started .
    

    Observação

    Em uma janela Bash externa, vá para a pasta app que tem o Dockerfile para executar esse comando.

Você usou o Dockerfile para compilar uma nova imagem de contêiner. Talvez você tenha notado que muitas "camadas" foram baixadas. O Dockerfile começa na imagem node:20-alpine. A menos que essa imagem já esteja no computador, essa imagem precisa ser baixada.

Após a imagem ser baixada, o Dockerfile copia seu aplicativo e usa yarn para instalar as dependências dele. O valor CMD no Dockerfile especifica o comando padrão a ser executado ao iniciar um contêiner nessa imagem.

O . no final do comando docker build informa que o Docker deve procurar o Dockerfile no diretório atual.

Iniciar o contêiner do aplicativo

Agora que tem uma imagem, você pode executar o aplicativo.

  1. Para iniciar o contêiner, use o comando a seguir.

    docker run -dp 3000:3000 getting-started
    

    O parâmetro -d indica que você está executando o contêiner no modo desanexado, em segundo plano. O valor -p cria um mapeamento entre a porta de host 3000 e a porta de contêiner 3000. Sem o mapeamento de porta, você não poderá acessar o aplicativo.

  2. Após alguns segundos, no VS Code, na área do Docker, em CONTÊINERES, clique com o botão direito do mouse em Introdução e selecione Abrir no Navegador. Em vez disso, você pode abrir o navegador da Web em http://localhost:3000.

    Você verá o aplicativo em execução.

    Screenshot shows the sample app with no items and the text No items yet Add one above.

  3. Adicione um ou dois itens e veja se ele funciona conforme o esperado. Você pode marcar itens como concluídos e remover itens. O front-end está armazenando itens com êxito no back-end.

Próximas etapas

Você concluiu este tutorial e tem um gerenciador de listas de pendências em execução com alguns itens. Você aprendeu a criar imagens de contêiner e executar um aplicativo conteinerizado.

Mantenha tudo o que você fez até agora para continuar esta série de tutoriais. Em seguida, confira a parte II desta série:

Aqui estão alguns recursos que podem ser úteis para você: