首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多个网站在码头集装箱中运行,如何实现?

多个网站在码头集装箱中运行,如何实现?
EN

Server Fault用户
提问于 2015-04-22 11:44:17
回答 1查看 1.2K关注 0票数 0

我使用以下docker脚本运行两个docker容器:

代码语言:javascript
复制
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。

请指教,谢谢!

EN

回答 1

Server Fault用户

发布于 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)等等

票数 1
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/684631

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档