Questão nº 66
Questão de Tecnologia da Informação · FGV TRF1 2024 (nº 66)
FGV2024Técnico Judiciário - Desenvolvimento de SistemasTecnologia da Informação
Gabarito: Aver comentário ↓
Carlos gerou uma imagem customizada para um contêiner no Docker, o qual executará um serviço na porta 3000, baseado em Node.JS.
Para o arquivo Dockerfile, foi utilizada a imagem node:alpine de base, e uma das linhas escritas por Carlos foi:
- AEXPOSE 3000 (alternativa correta)
- BCMD npm -p 3000:3000
- CWORKDIR ./src ./usr/app
- DRUN npm start
- ECOPY ./src
Resposta comentada
Gabarito Alternativa A
O comando EXPOSE no Dockerfile serve para documentar qual porta o serviço dentro do contêiner pretende usar. Ele informa aos usuários e a outras ferramentas Docker que aquela porta é relevante para a aplicação.
- (A) Correta:
EXPOSE 3000é a instrução correta para indicar que o serviço Node.JS dentro do contêiner estará escutando na porta 3000. É uma declaração da porta que a aplicação interna usa, não uma abertura da porta para o host. - (B) Incorreta:
CMD npm -p 3000:3000está incorreto.CMDdefine o comando padrão para executar quando o contêiner inicia (ex:CMD ["npm", "start"]). A parte-p 3000:3000é um argumento para o comandodocker runno host (para mapear portas), não um argumento para onpme não se usa dentro doCMDpara mapeamento de portas. Armadilha: Esta alternativa tenta confundir o comando de inicialização do serviço (CMD) com o mapeamento de portas do Docker (-p), que é feito na execução do contêiner, não na construção da imagem ou no comando interno. - (C) Incorreta:
WORKDIR ./src ./usr/appestá sintaticamente incorreto.WORKDIRdefine o diretório de trabalho para as instruções seguintes e aceita apenas um caminho, não dois. Além disso, não tem relação com a declaração de portas. - (D) Incorreta:
RUN npm startexecuta um comando durante a construção da imagem, criando uma nova camada.npm starté usado para iniciar o serviço, mas geralmente faz parte doCMDouENTRYPOINTpara ser executado quando o contêiner inicia, não durante a construção. Mais importante, não declara a porta que o serviço usará. - (E) Incorreta:
COPY ./srcestá incompleto, pois falta o destino para onde os arquivos serão copiados dentro do contêiner (ex:COPY ./src /app/src). Além disso, sua função é copiar arquivos, não declarar portas.
Fonte: FGV TRF1 2024 Técnico Judiciário - Desenvolvimento de Sistemas (Caderno Tipo 1). Reproduzida para fins de estudo.