题 从capistrano部署创建docker容器


我在理解如何利用Docker的现有基础架构代码时遇到了一些困难。

我有一个Ruby on Rails应用程序,它使用capistrano推出部署。我想使用这个capistrano脚本来创建一个新的docker镜像。我是否可以推出部署,然后使用已部署的目录在现有映像之上进行部署,比如说精确(因为它与我的目标操作系统匹配)。

这是正确的做法还是我错过了什么?


6
2018-03-05 15:53




如果你想继续使用capistrano来部署你的应用程序,你看到docker扮演什么角色? - sciurus
@sciurus我的应用程序存在于两个状态 - 从git检出“开发”,或通过capistrano“部署”。我不确定“部署”版本与“开发”版本有何不同。我想采用“部署”版本并将其停靠。然后“部署”到其他机器我可以传递docker图像。 - EightyEight


答案:


通常在Docker中,在容器中部署应用程序的首选方法是使用 dockerfile,这可以取代capistrano脚本的作用,主要是在容器上运行命令(安装包,执行git clone,启动服务和应用程序等)。

您可以使用基本映像容器和要执行的命令列表定义dockerfile,然后通过以下方式构建容器:

docker build {{your_repository_containing_dockerfile}}

因此,您可以将capistrano脚本转换为dockerfile,并使用Docker deploy替换Capistrano部署。


0
2018-05-06 17:53





@EightyEight

我们使用docker和Jenkins来进行部署。我们始终将代码保留在docker之外,直到我们想要发布并运行它为止。

您应该在要部署应用程序的所有服务器/实例上提供Docker Image。

您应该分两步完成整个部署。

1)在Capistrano中创建一个Job,为您要部署的应用程序的标记/分支构建一个包(tar或gz)。

2)通过以下步骤完成另一项工作以进行实际部署:

i)将软件包推送到您要部署应用程序的所有服务器上并解压缩该软件包。

ii)如果任何容器已经为同一个应用程序运行,则停止并运行容器,并在其上安装相应的容器和代码。

对于例如docker run -d -p 8000:8000 -v / path / to / the / tag:/ deployment / path / inside / docker --name(NameOfContainer)--env TERM = xterm accountid / imagename:version


0
2018-05-06 13:56