Desafio de Multi-stage Build no Docker

DockerIntermediate
Pratique Agora

Introdução

O Multi-stage Build do Docker é um recurso que permite utilizar múltiplos estágios em um Dockerfile para criar uma imagem Docker final. Neste desafio, você aprenderá a usar o Multi-stage Build do Docker para criar uma imagem menor e mais eficiente.

Criar um Dockerfile com Multi-stage Build

Nesta seção, você criará um Dockerfile que utiliza um build de múltiplos estágios.

Tarefas

  • Crie um novo Dockerfile usando dois estágios. O primeiro estágio compila a aplicação instalando as dependências necessárias e executando o script de build. O segundo estágio cria a imagem final copiando o código compilado do primeiro estágio, instalando apenas as dependências de produção e expondo a porta necessária.

Exemplo

Aqui está um exemplo dos passos que você seguirá:

  1. Crie um novo diretório chamado myapp e entre nele.

    mkdir myapp
    cd myapp
    
  2. Baixe o código-fonte do NodeJS a partir de https://github.com/labex-labs/nodejs-example.git.

    git clone https://github.com/labex-labs/nodejs-example.git
    

    Mova o código baixado para o diretório myapp.

    mv nodejs-example/* .
    rm -rf nodejs-example
    
  3. Crie um novo arquivo chamado Dockerfile no diretório myapp com o seguinte conteúdo:

    ## Stage 1: Build the application
    FROM node:14-alpine AS base
    WORKDIR /app
    COPY . ./
    RUN npm install
    
    ## Stage 2: Create the final image
    FROM node:14-alpine
    WORKDIR /app
    COPY --from=base /app/ .
    EXPOSE 3000
    CMD [ "npm", "start" ]
    

Requisitos

Para completar este desafio, você precisará:

  • Criar um diretório chamado myapp dentro de /home/labex/project.
  • Clonar o código-fonte do NodeJS para o diretório myapp.
  • Criar um Dockerfile no diretório myapp com o conteúdo especificado.

Construir uma Imagem Docker

Nesta etapa, você criará uma imagem usando o Dockerfile.

Tarefas

  • Construa uma nova imagem chamada myapp.

Exemplo

Aqui está um exemplo do que você deve ser capaz de realizar:

  1. Use o comando docker build para construir uma nova imagem chamada myapp.

    docker build -t myapp .
    
  2. Verifique se a imagem foi construída com sucesso usando docker images.

Requisitos

Para completar este desafio, você precisará:

  • Executar o comando docker build no diretório /home/labex/project/myapp.
  • Nomear a imagem como myapp.

Executar um Container Docker

Nesta etapa, você usará a imagem Docker para executar um container.

Tarefas

  • Use a imagem myapp para executar um container. O container deve expor a porta 3000 do container para a porta 3030 do host, e então acesse a aplicação no seu navegador.

Exemplo

Aqui está um exemplo do que você deve ser capaz de realizar:

  1. Inicie um novo container Docker chamado my-app.

    docker run --name my-app -p 3030:3000 myapp
    
  2. Abra um navegador web e navegue até http://localhost:3030 para acessar a aplicação em execução.

Requisitos

Para completar este desafio, você precisará:

  • Executar o container com o nome my-app.
  • Mapear a porta 3000 dentro do container para a porta 3030 no host.

Resumo

Neste desafio, você aprendeu como usar o Multi-stage Build do Docker para criar uma imagem Docker menor e mais eficiente. Ao usar múltiplos estágios em um Dockerfile, você pode separar os ambientes de compilação e execução, reduzindo o tamanho da imagem Docker final. Com esse conhecimento, você agora pode começar a construir suas próprias imagens Docker usando o Multi-stage Build.

✨ Verificar Solução e Praticar✨ Verificar Solução e Praticar✨ Verificar Solução e Praticar