以我的ghost博客为例进行说明,我在VPS上用docker启动了两个ghost博客,还有一个Nginx做反向代理,将两个域名分别指向两个博客。
docker启动命令
ghost:
1 | docker run -e NODE_ENV=production --name ghost1 -v /path/to/data/ghost/ghost1/:/var/lib/ghost -d ghost |
nginx:
1 | docker run -p 80:80 --name nginx --link ghost1 --link ghost2 -v /path/to/data/nginx/nginx.conf:/etc/nginx/nginx.conf -d nginx |
先启动两个ghost,然后启动nginx。使用–link参数将容器“链接”到一起,此参数会在容器中加入环境变量并在/etc/hosts
中插入一条容器名与IP的映射
1 | root@fabfd4bacfda:/# cat /etc/hosts |
设置nginx反向代理
修改nginx.conf
,在http段内添加如下内容
1 | http { |
注意proxy_pass
的值proxy_pass http://ghost2:2368;
。 ghost2是nginx容器/etc/hosts
中的一条,是由–link参数添加进来的。
设置完这些后,nginx就会将两个域名的请求分别代理到两个博客中。
补充
容器重启后IP可能变化,所以直接在nginx.conf中指定IP并不是一个好方法。使用–link时hosts文件会随着容器IP的变化更新,所以使用域名才是更容易维护的方法。