(我知道在別人面前問這個問題,但我不能夠解決使用其他職位提出的解決方案的問題,所以我想我將嘗試發佈我的配置文件,看看是否有人可以幫助。)泊塢窗:proxy_pass到另一個容器 - nginx的:主機在上游未發現
我想爲nginx創建一個容器,並使用proxy_pass
將請求傳遞到正在運行的Web應用程序的容器。我無法弄清楚如何在兩個容器之間進行通信。當我嘗試運行docker stack deploy -c docker-compose.yml somename
時,只有Web容器啓動。 nginx容器無法啓動,並且停留在嘗試重新啓動的循環中。這是日誌的消息,我得到:
2017年8月16日14時56分10秒[EMERG] 1#1:主機在上游沒有發現 「網絡:8000」 在/ etc/nginx的/ conf目錄 。 d/nginx.conf:2 nginx的:[EMERG]在 上游未找到主機 「網絡:8000」 中/etc/nginx/conf.d/nginx.conf:2
我找到答案,作爲只要您在docker-compose.yml
文件中使用與服務相同的名稱,nginx就會找到該變量。但是,這似乎沒有幫助我的情況。
如何像這樣不同的容器之間的溝通工作? 'web'變量在哪裏
我見過的大多數例子都在docker-compose.yml
文件中使用version: "2"
,這應該有所作爲嗎?
我的搬運工,compose.yml:
version: "3"
services:
web:
image: user/repo:web
deploy:
resources:
limits:
cpus: "0.1"
memory: 50M
restart_policy:
condition: on-failure
ports:
- "8000:80"
networks:
- webnet
nginx:
image: user/repo:nginx
ports:
- 80:80
links:
- web:web
depends_on:
- web
networks:
webnet:
Nginx的配置:
upstream docker-web {
server web:8000;
}
server {
listen 80;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
location/{
proxy_pass http://docker-web;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
}
}