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
Dockerfileusando 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á:
Crie um novo diretório chamado
myappe entre nele.mkdir myapp cd myappBaixe 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.gitMova o código baixado para o diretório
myapp.mv nodejs-example/* . rm -rf nodejs-exampleCrie um novo arquivo chamado
Dockerfileno diretóriomyappcom 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
myappdentro de/home/labex/project. - Clonar o código-fonte do NodeJS para o diretório
myapp. - Criar um
Dockerfileno diretóriomyappcom 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:
Use o comando
docker buildpara construir uma nova imagem chamadamyapp.docker build -t myapp .Verifique se a imagem foi construída com sucesso usando
docker images.
Requisitos
Para completar este desafio, você precisará:
- Executar o comando
docker buildno 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
myapppara executar um container. O container deve expor a porta3000do container para a porta3030do host, e então acesse a aplicação no seu navegador.
Exemplo
Aqui está um exemplo do que você deve ser capaz de realizar:
Inicie um novo container Docker chamado
my-app.docker run --name my-app -p 3030:3000 myappAbra um navegador web e navegue até
http://localhost:3030para 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
3000dentro do container para a porta3030no 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.



