基于Docker的开发环境适用于多个项目

我想知道基于Docker的开发环境和LAMP堆栈的最佳体系结构。

要求

  • 并行处理多个项目
  • 大多数项目都使用相同的LAMP堆栈(为了简单起见,我们假设所有项目都共享相同的堆栈和configuration)
  • 主机运行Windows + VBox + Docker工具箱(即Boot2Docker)

目前的架构

  • 一个共享的开发环境,在每个站点上运行多个容器(web,db,持久数据)和vhostsconfiguration
  • 使用脚本/ Jenkins容器来设置新项目(新的DB,虚拟主机configuration..)
  • 运行自定义Samba容器与Windows计算机共享数据(IDE在Windows上运行)

一如既往有优点。 虽然这样做很容易维护,但是我们无法真正地使用专门的docker-compose.yml文件部署一个特定的项目,而且我们也无法获得“微服务”的所有好处,例如replacePHP /特定站点的MySQL版本。

问题是我们如何使用每个项目docker-compose.yml文件,但仍然有多个项目同时运行(因为所有项目都使用端口80)。 它会更好(甚至有可能吗?)使用每个项目的随机端口,并在这些Web容器之上运行代理层?

这个用例的其他选项或通用devise模式?

谢谢。

简短的答案是肯定的。 如果没有指定端口,默认情况下,Docker会分配随机端口。 对于映射,我会使用: https : //github.com/jwilder/nginx-proxy

你可以有像project1.yml project2.yml ….并启动容器将是这样的:

docker-comppse -f project1.yml up 

不过,我不确定你为什么要这样做。 你可以使用像Rancher这样的东西,把我的开发主机分成多个小的开发环境。