docker工人,如何取代docker工人的卡皮斯特拉诺任务

我正在尝试dockerize我的生产轨应用程序。

目前的应用程序使用Ansible进行configuration,并使用capistrano进行部署。

我研究了不同的docker部署策略,并考虑摆脱docker中的capistrano,并将docker-compose

我正在编写dockerfile来configuration和部署应用程序,但部署类似于capistrano的应用程序有点复杂,因为deploy.rb使用几个rake任务来设置预先部署任务,如创build目录设置应用程序名称和获取一些variables。

如何在dockerfile中复制上限任务,或者是否有方法在Docker文件或运行Docker容器中使用当前上限任务?

现在是回顾并考虑Docker的好处是否超过复杂性的好时机。 假设是这样,下面是关于如何使这些组件更好地协同工作的一些build议。

虽然Ansible是一个configurationpipe理系统,但它也是为编排而devise的(即在一系列远程机器上运行命令)。 这与Capistrano有一些交叉,因此,将Capistrano任务移植到Ansible并从堆栈中消除一个工具(以及复杂性)会很有用。 这可能是通过创build您部署应用程序所运行的deploy.yaml手册来实现的。

Docker也与Ansible重叠,但在不同的区域configuration。 应用程序所需的系统configuration的任何部分都可以在容器内使用Dockerfileconfiguration,而不是在使用Ansible的系统级别configuration。

如果您有设置应用程序环境的rake任务,则可以将它们置于Dockerfile中的RUN命令中。 但请记住,只有在构build映像时才会执行这些操作,而不是在运行执行

一般来说,我这样看:Docker设置了一个容器,它拥有运行你的应用程序(包括你的代码的一个特定的结帐)所需的一切。 Ansibleconfiguration您运行容器的环境,并pipe理所有工作以更新它们并将其放在正确的位置。