我正在尝试在我的简单CIpipe道中集成docker容器来部署一个webapp。
我有3个容器与Nginx,Tomcat和MySQL。
我了解如何使用Dockerfiles创build这些容器并将它们链接在一起的基础知识。
我的工件上传到Nexus服务器,我看到在Docker容器上部署工件的不同方式。
一个是重buildtomcat容器拉动新生成的工件,并在Dockerfile中的ADD中将其复制到容器中。
另一种方法是启动未更改的Tomcat容器,在包含从nexus获取的新工件的主机上安装一个卷。
我不明白从“docker的angular度来看”是什么样的正确方法。 我可以看到一个容器的可重用性与一些固定容器的configuration之间的权衡,我可以在没有额外的提供webapp文件夹进行部署的情况下运行和运行。
这是我的一般困惑。 同样的nginx容器。 如果configuration文件中的特定更改导致容器重build,或者我应该在启动容器时在主机上挂载一些文件?
非常感谢
Docker的一部分胜利是简化和自动化部分开发过程。 我认为最好的办法是重build容器。 在存储库中pipe理您的简单configuration和小文件,将工件复制到Docker容器中作为Dockerfile进程的一部分。 这样,无论何时您必须更新代码,您只需滚动一个新的Docker容器。 共享一个挂载音量也可以,但是我想说,如果可以的话,你应该避免。 我之所以这样说,是因为装入的卷更难与SELinux一起使用。 SELinux现在可以在启动时自动为每个Docker容器生成MCS标签,这基本上将其限制在其目录中。 这大大降低了您的主机的风险,因为默认容器不包含任何有意义的方式。
如果您使用的是通过卷访问最新代码的固定容器,或者如果您使用embedded的最新代码构build新的Docker映像,则无关紧要。
只有在第一种情况下,你build立一次并且多次运行,而在第二种情况下,你将不得不每次build立并运行。
如果您正在使用Docker部署到生产环境,那么我会尝试让我的CIpipe道生成docker映像,因为它们将用于生产。