⚠ Lembre-se das instruções da seção Entregáveis, especialmente no tópico O que deverá ser desenvolvido
!
1. Crie um container em modo interativo, sem rodá-lo, nomeando-o como 01container
e utilizando a imagem alpine
na versão 3.12
➕ Informações adicionais
O avaliador executará o comando no arquivo command01.dc
.
- O container não deve ser inicializado, somente criado;
- O container deve estar preparado para acesso interativo.
- Dê uma olhada no comando
create
. 😉 - Lembre-se que um parâmetro não é necessariamente aplicável a apenas um comando;
- Consulte sempre que possível a Documentação Oficial sobre comandos básicos;
- Lembre-se que a esmagadora parte dos comandos docker recebe parâmetros (opções), como nesse exemplo.
- O
nome
do container deve ser01container
; - O container deve usar a imagem
alpine
na versão3.12
; - O
status
do container deve sercreated
; - O container não deve estar em execução após ter sido criado.
➕ Informações adicionais
O avaliador executará o comando no arquivo command02.dc
.
- O container
01container
, que acabou de ser criado e está parado, deve ser iniciado; - Se o container tiver sido iniciado de modo interativo, ele deve se manter ativo ao iniciá-lo.
- O avaliador verificará se o container está parado;
- O avaliador executará o comando criado neste requisito;
- O container deve estar em execução.
➕ Informações adicionais
O avaliador executará o comando no arquivo command03.dc
.
- Praticamente todo comando de listagem no Docker possui uma forma de filtragem.
- O comando deve retornar uma lista contendo informações apenas do
01container
.
➕ Informações adicionais
O avaliador executará o comando no arquivo command04.dc
.
- O container deve estar rodando e você deve ser capaz de executar um comando nesse container.
- É possível fazer isso sem usar o comando
attach
.
- Que o comando retornará os dados corretos da
distro
no container:NAME="Alpine Linux"
ID=alpine
VERSION_ID=3.12
➕ Informações adicionais
O avaliador executará os comandos nos arquivos command05.dc
e command03.dc
.
- O avaliador rodará o comando 5;
- O avaliador validará o processo com o comando 3.
➕ Informações adicionais
O avaliador executará o comando no arquivo command06.dc
.
- Que a imagem correta foi baixada;
- Que nenhum container foi iniciado para isso.
7. Rode um novo container com a imagem nginx
com a versão 1.21.3-alpine
em segundo plano nomeando-o como 02images
e mapeando sua porta padrão de acesso para porta 3000
do sistema hospedeiro
➕ Informações adicionais
O avaliador executará o comando no arquivo command07.dc
.
- Que o container foi iniciado corretamente;
- Que é possível ter acesso ao container pelo endereço
localhost:3000
; - Que a página retorna o valor esperado.
➕ Informações adicionais
O avaliador executará o comando no arquivo command08.dc
.
- Que não há nenhum container ativo após seu comando.
Escreva no arquivo command09.dc
um comando que fará o build
(documentação do comando) de uma imagem a partir do arquivo ./docker/todo-app/back-end/Dockerfile
, esta imagem deve ter o nome todobackend
.
No arquivo ./docker/todo-app/back-end/Dockerfile
escreva os comandos que farão com que a imagem:
- rode a partir da imagem do
node
na versão 14; - exponha a porta 3001;
- adicione o arquivo
node_modules.tar.gz
à imagem; - copie todos os arquivos da pasta
back-end
para a imagem. (você pode usar o caminho relativo, lembrando que aDockerfile
está em./docker/todo-app/back-end/Dockerfile
); - inicie a aplicação com o comando
npm start
.
➕ Informações adicionais
- Nesse contexto, deve-se criar um arquivo
Dockerfile
na pasta./docker/todo-app/back-end/
, que será utilizado com comando exigido no requisito; - Esse arquivo deve buscar reproduzir as etapas de
back-end
contidas noREADME.md
da pseudo-aplicação (também estão descritas na seçãoO que será testado
, do requisito) para que ele rode corretamente; - O avaliador executará o comando no arquivo
command09.dc
.
- O comando
ADD
do Dockerfile, também pode ser utilizado para descompactar arquivos dentro do container.- Entenda a diferença entre o comando
ADD
eCOPY
neste artigo.
- Entenda a diferença entre o comando
- Se existe um arquivo
Dockerfile
em./docker/todo-app/back-end/
:- O Dockerfile deve rodar uma imagem
node
utilizando a versão14
;- Recomenda-se o uso da variante
-alpine
, pois ela é otimizada para desempenho; - Lembre-se de consultar o README do
todo-app
para validar os requisitos da aplicação.
- Recomenda-se o uso da variante
- Deve estar com a porta
3001
exposta; - Deve adicionar o arquivo
node_modules.tar.gz
a imagem; - Deve copiar todos os arquivos da pasta
back-end
para a imagem; - Ao iniciar a imagem deve rodar o comando
npm start
.
- O Dockerfile deve rodar uma imagem
- Se ao buildar o Dockerfile o nome da imagem gerada é igual a
todobackend
.
10. Gere uma build a partir do Dockerfile do front-end
do todo-app
nomeando a imagem para todofrontend
Escreva no arquivo command10.dc
um comando que fará o build
(documentação do comando) de uma imagem a partir do arquivo ./docker/todo-app/front-end/Dockerfile
, esta imagem deve ter o nome todofrontend
.
No arquivo ./docker/todo-app/front-end/Dockerfile
escreva os comandos que farão com que a imagem:
- rode a partir da imagem do
node
na versão 14; - exponha a porta 3000;
- adicione o arquivo
node_modules.tar.gz
à imagem; - copie todos os arquivos da pasta
front-end
para a imagem. (você pode usar o caminho relativo, lembrando que aDockerfile
está em./docker/todo-app/front-end/Dockerfile
); - inicie a aplicação com o comando
npm start
.
➕ Informações adicionais
- Nesse contexto, deve-se criar um arquivo
Dockerfile
na pasta./docker/todo-app/back-end/
, que será utilizado com comando exigido no requisito; - Esse arquivo deve buscar reproduzir as etapas de
front-end
contidas noREADME.md
da pseudo-aplicação (também estão descritas na seçãoO que será testado
, do requisito) para que ele rode corretamente; - O avaliador executará o comando no arquivo
command10.dc
.
- O comando
ADD
do Dockerfile, também pode ser utilizado para descompactar arquivos dentro do container.- Entenda a diferença entre o comando
ADD
eCOPY
neste artigo.
- Entenda a diferença entre o comando
- Se existe um arquivo
Dockerfile
em./docker/todo-app/front-end/
:- O
Dockerfile
pode rodar uma imagemnode
utilizando a versão14
;- Recomenda-se o uso da variante
-alpine
, pois ela é otimizada para desempenho; - Lembre-se de consultar o README do
todo-app
para validar os requisitos da aplicação.
- Recomenda-se o uso da variante
- Deve estar com a porta
3000
exposta; - Deve adicionar o arquivo
node_modules.tar.gz
a imagem, de maneira que ele seja extraído dentro docontainer
; - Deve copiar todos os arquivos da pasta
front-end
para a imagem; - Ao iniciar a imagem deve rodar o comando
npm start
;
- O
- Se ao buildar o
Dockerfile
o nome da imagem gerada é igual atodofrontend
.
Escreva no arquivo command11.dc
um comando que fará o build
(documentação do comando) de uma imagem a partir do arquivo ./docker/todo-app/tests/Dockerfile
, esta imagem deve ter o nome todotests
.
No arquivo ./docker/todo-app/tests/Dockerfile
escreva os comandos que farão com que a imagem:
- rode a partir da imagem do
mjgargani/puppeteer:trybe1.0
; - adicione o arquivo
node_modules.tar.gz
à imagem; - copie todos os arquivos da pasta
tests
para a imagem. (você pode usar o caminho relativo, lembrando que aDockerfile
está em./docker/todo-app/tests/Dockerfile
); - inicie os testes com o comando
npm test
.
➕ Informações adicionais
- Nesse contexto, deve-se criar um arquivo
Dockerfile
na pasta./docker/todo-app/back-end/
, que será utilizado com comando exigido no requisito; - Esse arquivo deve buscar reproduzir as etapas de
testes
contidas noREADME.md
da pseudo-aplicação (também estão descritas na seçãoO que será testado
, do requisito) para que ele rode corretamente; - O avaliador executará o comando no arquivo
command11.dc
.
- O comando
ADD
do Dockerfile, também pode ser utilizado para descompactar arquivos dentro do container.- Entenda a diferença entre o comando
ADD
eCOPY
neste artigo.
- Entenda a diferença entre o comando
- A aplicação
todotests
só funciona corretamente se estiver dockerizada e dentro de uma rede docker configurada corretamente.
- Se existe um arquivo
Dockerfile
em./docker/todo-app/tests/
:- O Dockerfile deve rodar a imagem
mjgargani/puppeteer:trybe1.0
para que os testes funcionem; - Deve adicionar o arquivo
node_modules.tar.gz
a imagem; - Deve copiar todos os arquivos da pasta
tests
para a imagem; - Ao iniciar a imagem deve rodar o comando
npm test
;
- O Dockerfile deve rodar a imagem
- Se ao buildar o Dockerfile o nome da imagem gerada é igual a
todotests
.
12. Suba uma orquestração em segundo plano com o docker-compose de forma que backend
, frontend
e tests
consigam se comunicar
➕ Informações adicionais
O avaliador executará o comando no arquivo command12.dc
. Este comando pressupõe a existência do arquivo ./docker/docker-compose.yml
.
O docker-compose
deve rodar na versão 3 ou superior.
- Use as imagens já "buildadas" que foram executadas nos requisitos 9, 10 e 11 para a criação do compose;
- Consulte a documentação em
./docker/todo-app/README.md
; - É possível adicionar e extrair arquivos
.tar.gz
noDockerfile
com apenas um comando.
- O container de
todotests
deve ter como dependencia os containersfrontend
ebackend
; - O nome do service deverá ser
todotests
; - Deve ter uma variável de ambiente
FRONT_HOST
que recebe como valor o nome do container dofrontend
- Lembrando que, dentro de uma rede docker, o host de um container é indentificado pelo seu nome.
- O container de
todofrontend
deve rodar na porta3000
; - O nome do service deverá ser
todofront
; - Deve ter como dependencia o container
backend
; - Deve ter uma variável de ambiente
REACT_APP_API_HOST
que recebe como valor o nome do container dobackend
.- Lembrando que, dentro de uma rede docker, o host de um container é indentificado pelo seu nome.
- O container de
todobackend
deve rodar na porta3001
; - O nome do service deverá ser
todoback
;