在docker中不能链接nginx和ghost

我正在digitalocean上部署一个ghost服务器,端口默认为2368。

docker run -d --name ghost ghost 

还部署了一个nginx服务器。

 docker run -d -p 80:80 -p 443:443 --name nginx --link ghost:ghost -v /home/abc/nginx/sites-enabled:/etc/nginx/sites-enabled nginx 

在/ home / abc / nginx / sites-enabled的path下,我有一个configuration文件 – 名为ghost

 server { listen 0.0.0.0:80; server_name mydomain; access_log /var/log/nginx/mydomain.com.log; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header HOST $http_host; proxy_set_header X-NginX-Proxy true; proxy_pass http://ghost:2368; proxy_redirect off; } } 

最后

 docker restart nginx,ghost 

我可以清楚地看到nginx和ghost容器运行良好,并且转到服务器的IP地址,我可以看到nginx的欢迎页面,它说

 If you see this page, the nginx web server is successfully installed and working. Further configuration is required. 

但转到域,它可以'find服务器,有时也显示nginx的欢迎页面

首先,你的卷映射应该是-v /home/abc/nginx/sites-enabled:/etc/nginx/conf.d ,而不是site-enabled

其次,由于Nginx在启动时加载DNS条目并且永远不会更新,因此在ghost重新启动(因此获得新的IP地址)之后,Nginx将无法find您的ghost容器。 一个quickfix是运行docker restart ghost nginx而不是docker restart nginx ghost

试试这个预先设置的nginx代理https://github.com/jwilder/nginx-proxy

按照说明运行nginx代理:

 docker run -d -p 80:80 -v /var/run/docker.sock:/tmp/docker.sock:ro jwilder/nginx-proxy 

那么你可以简单地运行这个鬼的Docker:

 docker run --name some-blog -d -p 80:2368 -e VIRTUAL_HOST=domain.com -v /home/ghost/someblog/:/var/lib/ghost --restart unless-stopped ghost 

我有这样的多个幽灵容器设置。