O Docker cria uma entrada em / etc / hosts para mapear o novo endereço IP do contêiner para seu nome. Infelizmente o nginx ignora o / etc / hosts e só depende do seu resolvedor de DNS para resolver IPs, então isso não ajuda neste caso específico.
Existem algumas soluções alternativas. As duas soluções mais fáceis de implementar são:
- se você está rodando nginx e php no mesmo container (você não deveria), use 127.0.0.1:9000 em php-fpm e nginx
- se você estiver executando o nginx e o php-fpm em contêineres diferentes, ou se estiver executando o php-fpm dentro do contêiner e o nginx no host, adicione
-p 9000:9000
ao contêiner do php e configure o contêiner nginx para usarfastcgi_pass 172.17.42.1:9000
(ou qualquer IP estático usado pela interface do docker0 do host) -
se você preferir ter endereços IP estáticos, crie uma rede separada e atribua um ip estático ao seu contêiner do php, por exemplo:
docker network create --subnet=172.18.0.0/16 mynet123
docker run --net mynet123 --ip 172.18.0.22 -d --rm php-image-name
Soluções mais limpas envolveriam o uso de soluções de orquestração, aqui estou apenas indo para o caminho rápido e sujo.