Это связано с областью действия контейнерной сети.Эти контейнеры localhost
находятся внутри каждого контейнера соответственно - и это не то место, где отображаются ваши порты.Вместо этого выполните:
$ ifconfig
на своем хост-компьютере и найдите свой локальный IP-адрес и проксируйте трафик к вашему хосту - которому сопоставлены порты.
conf:
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html/;
index index.html index.htm;
}
location /example01 {
proxy_pass http://192.168.1.2:8181/;
}
location /example02 {
proxy_pass http://192.168.1.2:8282/;
}
}
, где 192.168.1.2
- локальный IP-адрес вашего компьютера.
Другим способом было бы связать эти контейнеры, а не прокси через localhost - но псевдоним, который вы предоставили бы в определении ссылки.Я могу уточнить, если вы выберете этот метод.
- отредактируйте с помощью метода связывания -
Для того, чтобы ваши сервисы были связаны, вам нужно использовать докеринструмент docker-compose
.Предполагая, что вы знакомы с тем, что это такое (ссылки на документы внизу), вы можете написать такой файл для компоновки:
first-nginx:
build: first-nginx/
ports:
- 8080:80
links:
- second-nginx
- third-nginx
second-nginx:
build: second-nginx/
ports:
- 8081:80
third-nginx:
build: third-nginx/
ports:
- 8082:80
Поместить в корневой каталог вашего проекта, например:
root
- first-nginx
+ nginx.conf
+ Dockerfile
+ some-other.files
- second-nginx
+ some.files
+ another-nginx.conf
+ Dockerfile
- third-nginx
+ some-nginx.conf
+ Dockerfile
+ docker-compose.yml
И вы сконфигурируете «основной» nginx для использования созданных ссылок следующим образом:
conf:
server {
listen 80;
location / {
root /usr/share/nginx/html/;
index index.html index.htm;
}
location /example01 {
proxy_pass http://second-nginx/;
}
location /example02 {
proxy_pass http://third-nginx/;
}
}
Обязательно спросите, если что-то неясно.
ссылки ref
compose ref