É porque você está definindo as variáveis de ambiente no docker-compose.yml
, mas tentando referenciá-las no tempo de compilação (também conhecido como RUN env
). Essas variáveis só estarão disponíveis depois que a imagem for criada, no comando ENTRYPOINT
/ CMD
.
Você precisa definir variáveis no tempo de compilação usando o comando ENV
no Dockerfile
ou usar as variáveis depois que o contêiner tiver sido iniciado (de qualquer forma, tudo bem no seu caso).
Para referenciar o db no serviço da web, você precisa criar uma rede personalizada ( link ) e defina o alias do domínio interno ou faça referência ao primeiro contêiner ao segundo usando links de serviço ( link ). O segundo parece mais apropriado no seu caso, uma vez que o serviço db não precisará referenciar o serviço da web.