Я использую 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
файл?
Несколько месяцев спустя я возвращаюсь, чтобы опубликовать (довольно простой) ответ на мой вопрос:
server_name
запись в конфигурации хоста Nginxextra_hosts
вход в docker-compose.yml
файл (не обязательно, но бесполезно)Просто вызовите сервер с именем контейнера Nginx в качестве хоста (nginx
Вот):
docker-compose exec php curl http://nginx
Других решений пока нет …