场景:现有几台服务器,各部署有十几到数十个Docker容器,容器相互之间独立没有关联,每个容器各自暴露一个到几十个端口不等,而且部分容器端口是随机的。
任务:把全部容器绑定到一个域名之下。
不废话,十条命令之内解决这件事。
第一步:拉取nginx,这里用的是tutum公司的镜像,这个公司的镜像质量都很高。
docker pull tutum/nginx
第二步:根据Dockerfile开了两个数据卷,方便写配置以及部署应用。
docker run -d -p 80:80 -v /**path**/app/:/app/ -v /**path**/nginx/sites-enabled:/etc/nginx/sites-enabled tutum/nginx
第三步:编辑/**path**/nginx/sites-enabled/default
文件如下:
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /app;
index index.html index.htm;
server_name localhost;
location / {
try_files $uri $uri/ =404;
}
}
# 上面是默认的不用管也可以。
server
{
listen 80;
server_name lab.example.com; # 这里填自定义域名
location / {
proxy_redirect off;
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_pass http://172.17.0.3:8181; # 这里填容器地址,如果不知道填写公网IP也是可以的。
}
}
暂时先这样,端口多变还没有解决,有时间补上。