如何在travis中构建我的docker(nodejs)容器并在生产中运行

时间:2016-10-27 09:26:42

标签: node.js docker travis-ci

我目前的设置:

  • 当更改的代码推送到Github时,Travis触发构建。
  • Travis使用Dockerfile构建容器并推送到dockerhub。

我需要实现的目标:

  • 从码头中心在生产环境中拉出容器。
  • 运行容器,显示所需的端口。

方法:

  • SSH进入生产环境并拉出容器并运行(使用travis.yml)。

我希望在Travis构建成功后立即在生产中拉动和运行容器。 SSH似乎是黑客攻击,我需要最佳实践来实现这一目标。

1 个答案:

答案 0 :(得分:1)

你有几个选择:

1 - 你真的想在DockerHub构建完成之后拉出图像,而不是在travis完成之后,在这种情况下你可以使用DockerHub webhooks来调用某种服务(它可以归结为任何类型的脚本)在您的服务器上,它将拉动图像并运行它。

来自https://docs.docker.com/docker-hub/repos/#/webhooks

  

您可以使用Hub存储库webhook来通知人员,服务和   将新映像推送到存储库后的其他应用程序   (这也适用于自动构建)。例如,您可以触发   一旦图像出现就自动进行测试或部署   可用。

2 - 使用像Ansible这样的东西来避免SSH自己进入机器。您只编写一次Ansible角色,它将在您的Travis构建中运行。 Ansible有一个非常好的docker模块,所以你会很好。

3 - 使用更加适应的基础设施,如Amzon ECS,它基本上是一个或一组EC2实例,为您运行和管理Docker容器和图像。如果您知道如何旋转EC2实例,那么创建一个简单的ECS实例将不会成为问题。

我希望这会有所帮助。