2015-09-29 1 views
2

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

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 настроен (в файле Докер) с виртуальным хост с именем 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: Не удалось подключиться к порту myapp.localhost.com 80: Соединение отклонено

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

+0

Из того, что я видел в Интернете, я должен добавить «-» nginx: myapp.localhost.com »в список« ссылок »в записи' php' 'docker-compose.yml' , Но это приводит к так называемой ошибке «Circular import» при запуске docker-compose. Возможно, https://github.com/docker/compose/pull/1676 решит проблему в Docker Compose 1.5. В любом случае, я открыт для любого другого решения! –

ответ

1

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

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

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

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

Спасибо за следующее. Это очень помогло мне. – clone45