Docker 牧场主发展环境

Docker 牧场主发展环境,docker,docker-compose,development-environment,rancher,Docker,Docker Compose,Development Environment,Rancher,我最近开始用rancher做一个项目。 几天之内,我建立了一个标准的微服务架构,其中包含4项基本服务(托管在Digital Ocean上),试图让它尽可能做好生产准备 服务: Api网关 GraphQLAPI OAuth2服务器 前端 它还包括负载平衡器,运行状况检查等 我惊讶于它有多好,因为我在配置中大量使用了rancher提供的所有功能,例如DNS约定、助手、rancher compose等 上述服务存在于它们自己的存储库中,它们有自己的 拥有用于生产的Dockerfile、docker

我最近开始用rancher做一个项目。 几天之内,我建立了一个标准的微服务架构,其中包含4项基本服务(托管在Digital Ocean上),试图让它尽可能做好生产准备

服务

  • Api网关
  • GraphQLAPI
  • OAuth2服务器
  • 前端
它还包括负载平衡器运行状况检查

我惊讶于它有多好,因为我在配置中大量使用了rancher提供的所有功能,例如DNS约定
、助手、rancher compose等

上述服务存在于它们自己的存储库中,它们有自己的 拥有用于生产的
Dockerfile
docker compose.yml
rancher compose.yml
,以便可以独立部署

既然我证明了rancher将是我的新“朋友”,我就需要一个策略在我的本地环境中运行相同的应用程序,并能够开发我的服务,就像我对Vagrant所做的那样

我想知道,将运行在rancher上的应用程序移植到开发环境的最佳方法是什么

我对如何解决这个问题有一些想法,但是,似乎没有一个想法允许我在不重新配置整个服务以进行开发的情况下实现它

1-本地机器上的牧场主 这是我采取的第一种方法,在本地安装
rancher服务器
rancher客户端
,并像在生产中一样部署整个堆栈。对我来说,这似乎是最合乎逻辑的想法。但是,这不允许我更改服务的代码并将其反映到live容器中。也许使用共享卷可能会奏效,但对我来说,这看起来微不足道。如果您有任何想法,请告诉我。对我来说,这个解决方案已经不存在了:(

2-Docker组合 我的第二次尝试是简单地使用
docker compose
和共享卷,省略了
负载平衡器
和rancher的所有功能:(然而,这可能会起作用,我需要更改我所有服务的所有配置,其中它们指向特定于牧场主的DNS域
,以便仅通过网桥网络使用
。但这意味着为不同的环境维护两种不同的配置,这既奇怪又不有趣

3-流浪汉 由于第二个解决方案已经很混乱(double
docker compose
和服务的双重配置),为什么不在vagrant中重新创建整个环境(没有rancher功能,可能有ansible)其中一个nginx会反向代理并解决服务之间的请求。但是,这也需要大量工作和加倍努力:(


是否有任何其他方法可以使rancher以一种不费力的方式适合于开发环境?依赖rancher或任何其他平台工具的公司如何解决这个问题?

本地机器上的rancher是一种常见模式。如果您在VM上或在Linux机器上本地运行rancher,当您启动堆栈时更改是将卷添加到主机


服务:
myapp:
卷数:
-/Users/myhome/code:/src
...

现在,您可以在compose文件和Rancher CLI中使用模板功能。类似于:


服务:
myapp:
{{如果dev local==“true”}
卷数:
-/Users/blah:/src
{{end}
...

然后你可以有一个答案文件

dev local=“false”

在开发环境中使用共享卷是一种不错的方法,不管是不是很简单。我们已经这样做了好几个月了。多亏了这一点,有没有办法指定
相对路径?