我使用以下docker脚本运行两个docker容器:
db:
image: cofoundry/mysql
environment:
- MYSQL_USER=wordpress
- MYSQL_PASS=wordpress
- MYSQL_DB=wordpress
ports:
- "3306:3306"
privileged: true
web:
image: cofoundry/nginx-phpfpm
volumes:
- ../bedrock:/app
environment:
- DOCROOT=/app/web
links:
- db
ports:
- "80:80"
privileged: true但是我哪里都找不到,我怎么能为不同的站点运行多个nginx和mysql容器,比如web_1 - db_1、web_2 - db_2等等?
此外,我还使用boot2docker ip更改了/etc/host文件以列出所需的所有域,但是如何为它们运行容器呢?我不能在同一港口运行集装箱80和3306。
请指教,谢谢!
发布于 2015-04-22 13:04:43
设想网络端口是系统中某些服务的地址。因此,如果多个服务具有相同的地址,哪一个服务将接收“邮件”?:)问题是,只有一个进程可以绑定到特定的网络端口。要解决nginx容器的问题,必须配置一些前端代理(如have )。您需要将其绑定到:80端口,以接受所有传入连接。然后,在haproxy.cfg中定义acls和后端。请参阅:acl web1 hdr_beg(Host) www.web1.com acl web2 hdr_beg(Host) www.some_other_web.com .... use_backend web1_backend if web1 use_backend web2_backend if web2 .... backend web1_backend ... server web1_server localhost:<random port of nginx container> backend web2_backend ... server web2_server localhost:<other random port of nginx container>
因此,当连接到:80端口时,Host将解析主机头,代理连接到匹配的后端。
使用MySQL,您可以为每个实例定义不同的绑定端口,并将php应用程序配置为建立到所需端口的连接。示例:web_1 would use db_1 (port 3306) web_2 would use db_2 (port 3307)等等
https://serverfault.com/questions/684631
复制相似问题