Docker关注点/服务分离

我有一个与docker一起使用的laravel项目。目前,我正在使用一个容器来承载我的项目所需的所有服务(apache,mySQL等)以及所需的依赖项(项目文件,git,composer等)。

从我阅读的内容来看,当前的最佳实践是将每个服务放入一个单独的容器中。到目前为止,这似乎已经足够简单了,因为这些服务被设计为可以长期运行(apache服务器,mySQL服务器)。当我使用这些“服务”容器启动-d它们时,它们将保持运行(docker ps),因为它们的主要过程一直在运行。

但是,当我从项目容器中删除所有服务时,就没有继续运行的主要过程了。这意味着一旦旋转,我的容器就会立即退出。

读了“黑客”运行的其他进程一样的tail -f /dev/nullsleep infinity使用交互模式,安装supervisord(我假设最终会看没有进程在这样的容器?),甚至留在前台运行容器(占终端控制台...)。

我如何联网这样的容器,以使其像抽象服务一样运行,但没有这些黑客就可以分离?我似乎在正式的docker文档中找不到很多信息,也找不到其他项目的任何示例(请链接)

编辑:我不是在谈论卷/存储容器来存储项目过程中的数据,而是如何使用容器来存储项目本身及其与服务无关的依赖项(项目文件,git,composer)

所以看完之后这个沿几次约阿希姆伊萨克森的评论,我终于明白了。工具不需要容器连续运行即可使用。正确分离项目文件,服务(mySQL,apache)和工具(git,composer)的方式有所不同。

项目文件保存在数据卷容器中。由于服务公开端口,因此它们已联网。这些工具位于各自的容器中这些容器共享项目文件的数据量-它们未联网。日志,数据库和其他输出可以保存在不同的卷中。

当您希望运行这些工具之一时,可以使用传递相关命令来旋转工具容器docker run然后,该工具会处理共享卷中持久保存的目录中的数据。只有在共享卷中用于操作数据的命令需要运行然后容器停止时,容器才会持久存在。

我不知道为什么这花了我这么长时间才能掌握,但这对我来说却是一个时刻。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章