Docker对于开发和维护确实带来了很大的好处,可是对于小型应用怎样部署?所讲内容限定在一个主机里。
在前端使用Nginx将不同域名的应用(或者根据路径)转发到对应的容器
在主机重启后,Docker容器的IP地址会发生改变,目前可以使用docker run的--link mysql:mysql参数指定依赖,在容器中即可通过名称访问,这个名称对应的IP将会出现在/etc/hosts中。
docker run -t -i --restart=always --link crm:crm --link objstsvr:objstsvr --name nginx -p 80:80 -p 443:443 y2link/nginx /bin/bash
在nginx中就可以通过crm和objstsvr访问这两个容器,其中一个配置文件样例crm.conf
:
server { listen 80; server_name crm.getdemo.cn; 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://crm:12080; } access_log /var/log/nginx/crm.log; }
link有一定的局限性:
- 当容器更新后,以同样的名称重新建立,这事依赖这个容器的其它容器也得重新建立,估计link是通过id而不是名称进行的。
使用Docker的几个注意事项:
- 不要将数据放在容器内部,使用
-v
参数将数据存储在主机目录中。