我想为我的开发团队(4 个 PHP 开发人员)使用 docker 构建一个“集中式”开发环境
- 我有一台运行容器的大型 Linux 服务器(大量 RAM、磁盘、CPU)。
- 所有开发人员在此 linux 服务器(主目录)上都有一个帐户,他们将项目源代码放置(git clone)。在本地(在他们的桌面机器上),他们可以通过网络共享访问他们的主目录。
- 我希望所有开发人员都能够同时在同一个项目上工作,但是在不同的容器(或使用链接容器的项目的容器集)中查看他们的代码编辑结果
docker PHP 开发环境本身是没有问题的。我已经成功地尝试过这样的事情:http: //geoffrey.io/a-php-development-environment-with-docker.html
我可以使用 fig,在每个项目源代码的根目录下都有一个 fig.yml,因此每个开发人员都可fig up
以为给定项目启动一组容器。我什至可以FIG_PROJECT_NAME
为每个帐户使用不同的环境变量,所以我认为 2 个开发人员可以fig up
同一个项目,并且他们不会有容器名称冲突
是否有意义 ?
但是之后,我真的不知道如何动态地授予对正在运行的容器的访问权限:运行时,容器中通常会有一个 Web 服务器映射到主机中的随机端口。如何设置一种“动态 DNS”来指向正在运行的容器,可以通过 nginx 反向代理访问,比如说(虚拟主机的创建和销毁也必须是动态的)?
总而言之,我想要的工作流程:
- 开发人员 ssh 进入开发环境(大型 linux 服务器)。
- 他从他的主目录进入项目目录并执行
fig up
- 在 nginx 反向代理中创建一个 vhost,指向正在运行的容器,并添加一个 DNS 条目(或 /etc/hosts 条目),它是这个先前生成的 vhost 的 server_name。
- 源代码从主机目录 ( 挂载到容器中
-v host/dir:container/dir
,因此开发人员可以在容器运行时编辑任何文件 - 可以通过访问 vhost 查看结果,例如:
randomly-generated-id.dev.example.org
- 当更改正常时,开发人员可以执行 git commit/push
- 然后开发
fig stop
人员依次删除 nginx 反向代理对应的 vhost 并删除动态 DNS 条目。
那么,如何进行这样的设置呢?我提到了 fig 之类的工具,但如果您有任何其他建议……但请记住,我想保持一个轻量级的工作流程(毕竟我们是一个小团队 :))
谢谢你的帮助。