我最近开始使用牧场主进行一个项目。 在几天之内,我建立了一个标准的微服务架构,提供4种基本服务(托管在Digital Ocean上),试图尽可能准备好生产
服务:
它还包括负载均衡器,运行状况检查等......
我很惊讶它有多好,因此我在我的配置中大量使用了牧场主提供的所有功能,例如DNS约定<service>.<stack>
,sidekicks,rancher-compose等...... < / p>
上述服务存在于他们自己的存储库中,他们拥有自己的服务
拥有Dockerfile
,docker-compose.yml
和rancher-compose.yml
用于制作,以便可以独立部署。
既然我证明了牧场主将成为我的新“朋友”,我需要一个策略来在我的本地环境中运行相同的应用程序并且能够开发我的服务,就像我一样使用 Vagrant 。
我想知道将 rancher 上运行的应用程序移植到开发环境的最佳方法是什么。
我对如何解决这个问题有一些想法,但是,如果没有重新配置整个服务进行开发,它们似乎都没有让我实现它。
这是我采用的第一种方法,在本地安装rancher-server
和rancher-client
并像生产一样部署整个堆栈。这对我来说似乎是最合乎逻辑的想法。但是,这不允许我更改服务代码并将其反映到容器中。也许使用共享卷可能会工作,但如果您有任何想法,它看起来微不足道请告诉我。对我来说,这个解决方案已经消失了:(
我的第二次尝试是明确使用docker compose
和共享卷,省略load balancers
以及牧场主的所有功能 :(但是,这可能会有效,我需要更改我所有服务的所有配置,他们指向一个特定于牧场主的DNS域<service>.<stack>
,仅通过桥接网络使用<service>
。但这意味着为不同的环境维护2种不同的配置,这很奇怪,没有乐趣。
由于第二个解决方案已经很混乱(双docker-compose
和服务的双重配置)为什么不只是在vagrant中重新创建整个环境(没有rancher功能,可能带有ansible),其中一个nginx执行反向代理并解决服务之间的请求。然而,这需要相当多的工作和双重努力:(
还有其他方法可以让牧场主以非痛苦的方式适应开发环境吗?依赖牧场主或任何其他平台工具的公司如何解决这个问题?
答案 0 :(得分:1)
本地机器上的Rancher是一种常见的模式。如果您在VM上运行Rancher,或在Linux机器上本地运行,则在启动堆栈时,微妙的更改是您向主机添加卷。
services:
myapp:
volumes:
- /Users/myhome/code:/src
...
您现在可以在撰写文件和Rancher CLI中使用模板功能。类似的东西:
services:
myapp:
{{ if dev-local == "true"}}
volumes:
- /Users/blah:/src
{{end}}
...
然后你可以拥有一个只有的答案文件
dev-local="false"