(我知道在别人面前问这个问题,但我不能够解决使用其他职位提出的解决方案的问题,所以我想我将尝试发布我的配置文件,看看是否有人可以帮助。)泊坞窗: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;
}
}