Ank*_*rma 24 docker dockerfile
所以,这是问题,我需要做一些开发,为此我需要以下包:
一种选择是我采用Ubuntu映像,创建容器并逐个开始安装并完成,启动我的服务器,然后公开端口.
但这也很容易在虚拟盒子里完成,而且不会使用Docker的强大功能.因此,我必须开始用这些包构建我自己的图像.现在这里是一个问题,如果我开始编写我的Dockerfile,并且如果放置命令来下载其中的Node js(和其他),这又变得像虚拟化一样.
我需要的是,我从Ubuntu的启动和不断增加的引用的MongoDB的,的NodeJS,RabbitMQ的,Nginx的和Redis的内部Dockerfile终于露出各自携出.
以下是我的查询:
提前致谢.
Gri*_*mmy 39
保持图像清晰.每个容器运行一个服务.使用docker hub上的官方图像为mongodb,nodejs,rabbitmq,nginx等.如果需要,可以扩展它们.如果你想在胖容器中运行所有东西,你也可以使用VM.
你当然可以在开发设置中做一些疯狂的东西,但为什么要花时间在生产环境中设置零值的东西呢?如果您需要扩展其中一项服务怎么办?如何在每个服务上设置内存和CPU限制?.. 而这样的例子不胜枚举.
不要制作单片容器.
一个好的开始是使用docker-compose配置一组可以相互通信的服务.您可以制作文件的prod和dev版本docker-compose.yml.
进入正确的思维框架
在完美的世界中,您可以在生产中的集群环境中运行容器,以便能够扩展系统并具有并发性,但这可能会过度,具体取决于您正在运行的内容.至少可以把它放在脑后,因为它可以帮助你做出正确的决定.
如果你想成为一个纯粹主义者,可以考虑一些要点:
您当然可以在开发中执行脏操作,例如在主机卷中映射以进行持久存储(并且许多在prod中使用独立于docker的人也可以这样做).
理想情况下,我们应该将dev中的docker和docker i prod分开.Docker在开发过程中是一个很棒的工具,因为你可以在几分钟内完成redis,memcached,postgres,mongodb,rabbitmq,node或者运行,并与其他团队一起构建设置.生产中的Docker可以是一个完全不同的野兽.
我还要补充一点,我一般都反对狂热主义,即"一切都应该在码头工作中".在有意义的时候在docker中运行服务.大公司制作自己的基本图像也并不罕见.这可能需要很多工作,并且需要维护才能跟上安全修复等问题.当你从docker开始时,这不一定是你跳过的第一件事.
| 归档时间: |
|
| 查看次数: |
19198 次 |
| 最近记录: |