1
resposta

message send

Ao realizar o send ocorre este problema: { "message": "A senha deve conter pelo menos 8 caracteres, incluindo letras maiúsculas, minúsculas, números e caracteres especiais" }

Mesmo seguindo as orientações de senha ocorre isso.

Percebi que a aplicação e API somente respondem ao localhost:3000, não seria possível alterar para responder como bridge em ambos? Desta forma ao subir o container em qualquer ambiente seria possível acessar com o IP:3000 correspondente à rede configurada nas interfaces docker.

1 resposta

Olá Soc! Tudo bem?

Isso aconteceu provavelmente pela branch em que você está. Para iniciar o curso, é importante fazer o download da branch setup-inicial: https://github.com/alura-cursos/3156-Curso-2-AppSec/tree/setup-inicial

Ou fazer o download do projeto zipado por meio desse link: https://github.com/alura-cursos/3156-Curso-2-AppSec/archive/refs/heads/setup-inicial.zip

Foi um erro meu ter deixado a branch projeto-final como a branch default, vou providenciar a correção no repositório.

E realmente, a aplicação no docker-compose.yml está configurada para responder somente no endereço localhost:3000 dentro do container, o que foi visto somente como necessário para o pessoal que desenvolveu a API. Mas isso realmente pode limitar o acesso à aplicação apenas a partir do próprio container, o que não é muito útil se fosse em ambientes de desenvolvimento ou produção, com o objetivo de acessar a aplicação de outros dispositivos.

Então, foi muito bem observado e você pode alterar isso sim. Caso queira, para permitir o acesso à aplicação a partir de outros dispositivos, incluindo o host em que os containers estão sendo executados ou outros dispositivos na mesma rede, você precisaria fazer algumas modificações no arquivo docker-compose.yml:

  • Alterar a configuração do serviço app para que ele escute em todos os endereços de rede:

Dentro do serviço app, você pode modificar o mapeamento de portas para que a aplicação escute em todas as interfaces de rede, em vez de apenas no localhost. Para fazer isso, você pode alterar a seção ports para algo como:

ports:
  - "0.0.0.0:3000:3000"

Isso faz com que a porta 3000 do container seja mapeada para todas as interfaces de rede do host.

  • Configurar a aplicação para ouvir em todas as interfaces de rede:

Além de configurar o mapeamento de portas no Docker Compose, é importante verificar as configurações da própria aplicação. Para isso, configure o servidor para ouvir em todas as interfaces de rede passando 0.0.0.0 como o endereço de escuta no arquivo server.ts na linha 66:

const server = app.listen(process.env.SERVER_PORT, '0.0.0.0', () => {
  console.log(`Server running on port ${process.env.SERVER_PORT}`);
});

Com essas alterações, sua aplicação deve ser acessível não apenas através do localhost dentro do container, mas também através do endereço IP da máquina host ou outros dispositivos na mesma rede local.

No entanto, é importante destacar que, em um cenário real, ao expor a aplicação dessa maneira, você está tornando-a acessível a partir da rede local. Em um ambiente de produção, você precisaria considerar medidas adicionais de segurança, como firewalls, autenticação e autorização, para proteger sua aplicação contra acesso não autorizado.

Além disso, essa alteração é opcional e não interfere no andamento do curso.

Espero ter ajudado! Bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software