多个网站在docker容器中运行,如何实现?

时间:2015-04-22 08:57:05

标签: nginx docker virtualhost

我使用以下docker-composer脚本运行两个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-phpfpm网页容器,例如web_1,web_2等?

或者,或者,如何在运行docker-composer时传播自定义nginx.conf,这样我就可以在那里配置虚拟主机。

谢谢!

1 个答案:

答案 0 :(得分:0)

所以这样做的方式(,因为我在评论中的mentioend)是使用像autodock这样的东西:

示例:基于您的docker-compose.yml ):

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
    - VIRTUALHOST=myapp.example.com
  links:
    - db
  privileged: true

autodock:
    image: prologic/autodock
    ports:
        - "1338:1338/udp"
        - "1338:1338/tcp"
    volumes:
        - /var/run/docker.sock:/var/run/docker.sock

autodockhipache:
    image: prologic/autodock-hipache
    links:
        - autodock
        - hipache:redis

hipache:
    image: hipache
    ports:
        - 80:80
        - 443:443

唯一要求是您为*.example.com设置通配符DNS条目以指向“Docker Host”。 e.g:

*.example.com A 1.1.1.1

您可以在文章中详细了解这一切是如何运作的:

A Docker-based mini PaaS

这将扩展并适用于您希望在“Docker Host”上运行的多个网站。

编辑:这个设置的好处在于它很简单,它是自动化的,它只需要向你想要暴露给web的容器添加一个额外的环境变量,只有一个初始化设置要求(通配符dns条目)。