从 Capistrano 部署创建 Docker 容器

从 Capistrano 部署创建 Docker 容器

我有点难以理解如何利用 Docker 来利用我现有的基础设施代码。

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

这是正确的方法吗?或者我遗漏了什么?

答案1

@EightyEight

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

您应该在想要部署应用程序的所有服务器/实例上都拥有 Docker 映像。

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

1)在Capistrano中为您要部署的应用程序的标签/分支构建一个包(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

答案2

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

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

docker build {{your_repository_containing_dockerfile}}

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

相关内容