Eu uso o Docker para meu ambiente de desenvolvimento PHP e configuro minhas imagens com o Docker Compose dessa maneira:
myapp:
build: myapp/
volumes:
- ./myapp:/var/www/myapp
php:
build: php-fpm/
expose:
- 9000:9000
links:
- elasticsearch
volumes_from:
- myapp
extra_hosts:
# Maybe the problem is related to this line
- "myapp.localhost.com:127.0.0.1"
nginx:
build: nginx/
ports:
- 80:80
links:
- php
volumes_from:
- myapp
elasticsearch:
image: elasticsearch:1.7
ports:
- 9200:9200
O Nginx é configurado (em seu arquivo Docker) com um host virtual chamado myapp.localhost.com
(server_name
parâmetro) e que aponta para o /var/www/myapp
pasta.
Tudo isso funciona bem.
Mas aqui está o meu problema: o meu aplicativo da web está chamando a si mesmo pelo myapp.localhost.com
URL com cURL (no código PHP), que pode ser reproduzido mais facilmente executando este comando:
docker-compose run php curl http://myapp.localhost.com
A resposta do cURL é a seguinte:
erro cURL 7: Falha ao conectar-se à porta myapp.localhost.com 80: Conexão recusada
Você tem alguma ideia de como posso chamar o URL do aplicativo? Há algo que eu perdi na minha docker-compose.yml
Arquivo?
Respostas:
1 para resposta № 1Meses depois, volto a postar a resposta (bastante direta) à minha pergunta:
- Remova o
server_name
entrada na configuração do host Nginx - Remova o
extra_hosts
entrada emdocker-compose.yml
arquivo (não é necessário, mas é inútil)
Basta chamar o servidor com o nome do contêiner Nginx como host (nginx
Aqui):
docker-compose exec php curl http://nginx