我需要一些帮助,并指出正确的方向。

我有6个git存储库,这些存储库结合了一个更大的应用程序(3个Node.js API,2个React Web应用程序和一个Ansible存储库以及用于

当前,我们仅使用Ansible和CircleCI来构建它,但是当前的构建过程并不那么好,我想转向Docker,docker-compose和CircleCI 2.0。

事情是:我应该如何对其进行docker化?

所有数据库都是远程的。我应该如何使用nginx?

我考虑过为每个应用程序编写Dockerfile,然后使用Ansible连接到主机,安装Docker,提取源代码并开始从Dockerfiles构建容器。

应由Ansible在主机上配置Nginx,还是可以将其制成Docker容器?

#1 楼

使用docker compose(如果要分发容器,则使用docker swarm)为每个Git存储库创建一个容器。这应该很好地反映了Docker的每个容器都用于单一目的的理念。

就示例而言,我建议您看看结合了3个数据库的veleda(无耻的自我提升) ,长颈瓶应用程序,ruby应用程序(Grafana),Jekyll和nginx。它还包括集成到Travis-ci中的单元测试,并且应该可以转移到circle-ci。

关于nginx方面,030已经提到有完成的图像可以使您的生活更轻松。甚至包括自动的“加密”服务的软件。

Ansible可以很好地集成到组合中。如果您使用它来安装依赖项和网络配置,则现在由docker处理。对于基于SSH的任务,ansible仍然有用。检查一下这些工具及其职责范围的比较。

评论


所以我将设置CircleCI来运行Ansible剧本,该剧本会通过SSH进入目标服务器,安装Docker和docker-compose,提取git存储库并运行docker-compose?

–user134865
18年2月18日在13:48

并且不要忘记秘密管理。不确定我们将如何支持ci,但是在Travis上这很容易。这是两个很好的指南:gist.github.com/nickbclifford/16c5be884c8a15dca02dca09f65f97bd和kjaer.io/travis

–莫里茨
18年2月18日在16:46

我通过ansible-Vault和CircleCI的环境变量来处理秘密。

–user134865
18年2月19日在0:03