我是一个linux noob,在VPS上使用apache或nginx管理docker容器。
我使用了一个OVH经典的Vps(4go ram,25Go SSD),已经安装了ubuntu 15.04+docker的映像。
docker容器的安装真的很容易,在我的情况下,我安装镜像sharelatex没有问题。
docker run -d
-v ~/sharelatex_data:/var/lib/sharelatex
-p 5000:80
--name=sharelatex
sharelatex/sharelatex
在http://51.255.47.40:5000
端口的VPS的IP上可以访问该站点,这表明该站点工作没有任何问题。
我已经有一个子域(tools.sebastiereneycoyrehourcq.fr)被配置为在服务器ip vps上运行(51.255.47.40
在网络面板中路由到外部),不工作,不明白为什么。
我在51.255.47.40
上安装了一个apache服务器,但我想最好的选择可能是安装nginx或apache的docker镜像?你能就这一点给我建议吗?在那之后,我如何重定向到链接到我的子域的apache或nginx的经典80端口上的docker映像的5000
端口?
以前的答案可能涵盖了大多数问题,尤其是在域名存在重定向问题的情况下。
为了完全便携并使用docker的所有可能性,我的建议是使用Nginx官方docker映像,使其成为唯一可以从外部访问的映像(随着端口的开放),并使用--link
来管理您的Nginx容器和其他容器之间的连接。
我在类似的情况下也这样做过,效果很好。以下是我对你的处境所做的初步翻译。
您在没有指定任何外部端口的情况下启动共享乳胶容器:
docker run -d
-v ~/sharelatex_data:/var/lib/sharelatex
--name=sharelatex
sharelatex/sharelatex
您为shareLatex服务器准备了一个nginx conf文件,放置在$HOME/nginx/conf
中,看起来像
upstream sharelatex {
# this will refer to the name you pass as link to the nginx container
server sharelatex;
}
server {
listen 80;
server_name tools.sebastienreycoyrehourcq.fr;
location ^~ / {
proxy_pass http://sharelatex/;
}
}
然后用适当的卷链接和容器链接启动nginxdocker容器:
docker run -d --link sharelatex:sharelatex --name NginxMain -v $HOME/nginx/conf:/etc/nginx/sites-available -v -p 80:80 kekev76/nginx
ps:这是用我们自己的kekev76/nginx镜像完成的,它在github和docker上是公开的,但你可以将原理调整为官方的nginx镜像。
nginx-proxy
(https://github.com/jwilder/nginx-proxy)然后在VIRTUAL_HOST
设置为tools.sebastienrycoyrehourcq.fr的情况下运行sharelatex就足够了。
例如
docker run -d -p 80:80 -v /var/run/docker.sock:/tmp/docker.sock:ro jwilder/nginx-proxy
然后是
docker run -d
-e VIRTUAL_HOST=tools.sebastienreycoyrehourcq.fr
-v ~/sharelatex_data:/var/lib/sharelatex
-p 5000:80
--name=sharelatex
sharelatex/sharelatex
子域tools.sebastienreycoyrehourcq.fr
配置不正确。它不解析到任何IP地址,这就是它不工作的原因。
配置子域后,您可以使用以下命令在端口80上运行sharelatex容器:
docker run -d
-v ~/sharelatex_data:/var/lib/sharelatex
-p 80:80
--name=sharelatex
sharelatex/sharelatex
通过这种方式,您可以访问http://tools.sebastienreycoyrehourcq.fr