A partir do acesso ao terminal de um servidor Debian GNU/Lin...

Próximas questões
Com base no mesmo assunto
Q1844473 Engenharia de Software
A partir do acesso ao terminal de um servidor Debian GNU/Linux com o Docker Engine e Docker Compose devidamente instalados, considere:
• O usuário logado no terminal é o root • A saída do comando pwd é: /home/user/projeto • A saída do comando docker image ls é:
Imagem associada para resolução da questão

• A saída do comando ls -lha é:
Imagem associada para resolução da questão

• O conteúdo do arquivo Dockerfile é:
Imagem associada para resolução da questão

• O conteúdo do arquivo docker-compose.yml é
Imagem associada para resolução da questão

Para se colocar em execução, em segundo plano, um contêiner baseado na imagem especificada pelo arquivo Dockerfile, publicando a porta 8080 do host para a porta 80 do contêiner, é/são suficiente(s) o(s) comando(s):
Alternativas

Comentários

Veja os comentários dos nossos alunos

The docker compose up command aggregates the output of each container (liked docker compose logs --follow does). When the command exits, all containers are stopped. Running docker compose up --detach starts the containers in the background and leaves them running.

https://docs.docker.com/compose/reference/up/

KUESTÃO difícil, mas a resposta é essa mesmo.

O docker-compose.yml sempre busca e detecta na pasta corrente um arquivo Dockerfile.

Como é executado o comando docker-compose up, o próprio comando entende que deve buscar um Dockerfile e executar um container com aquela especificação.

E como usamos o comando docker-compose ao invés do comando docker puro, significa que os parâmetros de porta (-p), volume (-v) e variáveis de ambiente (-e) não precisam estar especificados na linha de execução toda do comando básico docker run, bastando apenas estarem especificados no corpo do docker-compose.yml. É isso que aconteceu. Ele especificou "ports: 80:8080".

O parâmetro -d significa dettached, do inglês "desanexado" ou "desacoplado", significando que o processo executa em background no Linux, e não no foreground.

Dockerfile vs Docker-compose.yml

Dockerfile: instruções para construir imagem Docker personalizada, contém comandos Docker, específica o ambiente e dependências, é usado com o comando "docker build".

docker-compose.yml: definir e gerenciar vários contêineres, define os serviços necessários para o app e suas configurações, dependências, links de rede e volume de dados. É usado com o comando "docker-compose up".

Gabarito E

  1. A questão trouxe o primeiro comando docker image ls seguido da primeira imagem para informar que não tem nenhuma imagem docker.
  2. O segundo comando ls -lha é para nos informar que estamos dentro do diretório que se encontra os arquivos Dockerfile e docker-compose.yml, se não estivesse os comandos seguintes não funcionariam.
  3. Aqui ele apresentou o conteúdo do Dockerfile dentro dele tem o comando EXPOSE 80, o que indica que essa é a porta de entrada para o container (o que pede na questão)
  4. ele apresenta o conteúdo do docker-compose, com ele podemos verificar que vai executar um container web, mapeando a porta host 8080 para a do docker 80.
  5. Sabendo disso não precisamos executar o container, mas sim o docker-compose diretamente. o comando é docker-compose up o parâmetro -d é só pra deixar eles rodando em segundo plano (modo detached)

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo