这是我的情况:
现在我想更改一些代码并将更改重新部署到这3台服务器。我可以想出3种可能的方法来促进自动化:
数字1似乎是最容易的,但我在Dockers上阅读的大多数其他讨论都倾向于像3这样的情况,这对我来说似乎相当啰嗦。
这里最好的选择是什么(或者不是这里),我是Docker的新手,所以我错过了什么?我问过一个知道Docker的人,他们的回答是“你没有想到Docker的方式”,那么Docker的方式是什么?
答案 0 :(得分:5)
我认为选项3的想法是,您只构建一次图像,这意味着所有服务器都将运行相同的图像。另外两个可能产生不同的图像。
E.g。在一个稍微复杂的场景中,如果你使用选项1,这三个版本甚至可以选择不同的提交。
答案 1 :(得分:0)
选项2和3的组合可与Fabricio一起使用。这是Fabric的扩展,因此您项目的from fabricio import docker, tasks
app = tasks.ImageBuildDockerTasks(
service=docker.Container(
name='app',
image='registry/project/image:tag',
options={'publish': '8000:8000'},
),
hosts=['user@host1', 'user@host2', 'user@host3'],
)
可能如下所示:
fab --list
使用上面的配置定义,您可以从项目根目录中键入Available commands:
app prepare -> push -> backup -> pull -> migrate -> update
app.deploy prepare -> push -> backup -> pull -> migrate -> update
app.prepare prepare Docker image
app.pull pull Docker image from registry
app.push push Docker image to registry
app.rollback rollback Docker service to a previous version
app.update update service to a new version
,并查看可用的Fabricio命令列表:
<button id="myToggleButton">CLICK ME</button>
还有一堆examples of how to use Fabricio,包括Docker swarm mode,可能对您的配置非常有用。