Отказ в локальном соединении в среде разработки Docker

Я использую Docker для своей среды разработки PHP и настраиваю свои изображения с помощью Docker Compose следующим образом:

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

Nginx настроен (в своем файле Docker) с виртуальным хостом с именем myapp.localhost.com (server_name параметр), и это указывает на /var/www/myapp папка.

Все это прекрасно работает.

Но вот моя проблема: мое веб-приложение вызывает себя через myapp.localhost.com URL с помощью cURL (в коде PHP), который легче воспроизвести, выполнив следующую команду:

docker-compose run php curl http://myapp.localhost.com

Ответ cURL следующий:

ошибка 7 cURL: не удалось подключиться к порту 80 myapp.localhost.com: соединение отклонено

Есть ли у вас какие-либо идеи о том, как я могу назвать URL-адрес приложения? Есть ли что-то, что я пропустил в своем docker-compose.yml файл?

2

Решение

Несколько месяцев спустя я возвращаюсь, чтобы опубликовать (довольно простой) ответ на мой вопрос:

  • Удалить server_name запись в конфигурации хоста Nginx
  • Удалить extra_hosts вход в docker-compose.yml файл (не обязательно, но бесполезно)

Просто вызовите сервер с именем контейнера Nginx в качестве хоста (nginx Вот):

 docker-compose exec php curl http://nginx
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]