我花了很多时间试图让NGINX + Sinatra在Mac上的localhost上互相交谈。用dockerfile定义的Sinatra的docker容器可以毫无问题地加载到localhost:3000上。 NGINX容器(带有自定义default.conf文件)无法与我的应用程序进行上游通信。 docker-compose文件如下:
version: '3'
services:
sinatra:
build: app/
ports:
- "3000:3000"
nginx:
image: nginx:latest
container_name: production_nginx
volumes:
- ./nginx/default.conf:/etc/nginx/default.conf
ports:
- "80:80"
- "443:443"
depends_on:
- sinatra
links:
- sinatra
在nginx的default.conf中,我具有以下内容:
server {
listen 80 default_server;
access_log /var/log/nginx/host.access.log main;
location / {
proxy_pass http://sinatra:3000;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
我的理解是'link'指令将使我以这种方式引用sinatra服务。但是,它不起作用。我在Docker中配置的本地mac的共享路径将允许来自所有这些来源的文件,当我执行到各个容器中时可以看到它们。任何想法为什么这行不通?同样,sinatra服务在localhost:3000上响应,因此它必须与NGINX一起使用。谢谢你的指导。