在打包和发布应用程序时,Docker似乎是解决所有开发人员头痛的难以置信的新工具,但我无法找到简单的解决方案,只需升级现有应用程序而无需构建或购买整个应用程序“云“系统。
我不希望任何kubernetes集群或docker-swarm部署数百个微服务。只需简单地用容器替换现有的部署过程,即可获得更好的封装和可升级性。 如果对更多容器的需求增加,那么将来可能会升级它,因此手动处理将不再有意义
本质上应该捆绑直接应用程序依赖项(语言和运行时,依赖项),而不需要使用它们“乱丢”主机服务器。 较低级别的静态服务(如数据库)应该仍然在主机系统中,以及入口路由器/负载均衡器(简单的nginx代理)。
以这种方式使用它是否有意义?如果是这样,做这样的事情有没有“最佳实践”?
更新
对于我想要使用它的应用程序,我已经在使用Gitlab-CI。 测试已经通过Gitlab-CI在docker环境中运行,但部署仍然是“旧方式”(将git repo同步到服务器并自动重启应用程序等)。
将应用程序本身包含在内并不是问题,我也通过云服务(主要是Heroku)使用完整的docker部署,但是对于这个项目来说,这样的事情是过度的。如果我几乎没有任何优势,那么为云服务器环境支付数百美元是没有意义的。 我发现了几个“安装你自己的heroku”系统,但我不需要或想要管理动态系统的复杂性。
我认为基本上用于更新和重新启动docker容器的两个远程bash命令(在它被CI推送到注册表之后)已经可以完成这项任务了 - 尽管与当前方式相比可能非常不可靠
答案 0 :(得分:1)
不幸的是,“最佳做法”非常主观,因为它完全取决于您的设置和组织。
看起来你正在寻找一种极简主义的Docker容器方法。您只想将源代码和依赖项放入容器中,然后将其推送到系统中。这对于Docker来说绝对是可能的,但是这样做的方式需要你的研究才能看到最合适的东西。
以下是我认为你应该开始提出的问题:
1)是否有CI工具可以帮助我将这些容器打包在一起,可能是我已经使用过的东西? (Jenkins,GitLab CI,CircleCI,TravisCI等......)
2)我可以使用Dockerhub(https://hub.docker.com/)提供的官方Docker图像,还是需要自己制作?
3)我如何存储Docker Images?我是否会托管一个基本的Docker注册表(https://hub.docker.com/_/registry/),或者我想要一些具有更多访问控制权的东西(Gitlab Container Registry,Harbor等...)
这真的只关注问题的持续集成部分。一旦你搞清楚了,那么你可以开始考虑如何部署这些图像(甚至可能使用上面的工具之一)。
注意:此外,Docker并没有消除所有开发人员的麻烦。它能解决一些问题吗?绝对。但Docker以及随之而来的容器思维方式最好的做法是将许多问题转移到左侧。这意味着您可以尽早看到流程中的许多问题,而不是在您推动产品时出现的那些问题,而您突然进行了消防演习。同样,Docker不应被视为解决所有问题。如果你进入Docker认为它将是一个解决所有问题,那么你就是在为自己做好准备。