[
](anth-oleinik.medium.com/?source=pos…)
6月13日
-
4分钟阅读
[
拯救
一个讨厌Docker的人说,学习Docker将是你SWE生涯中最好的决定
Docker是最棒的,伙计。
我曾经很讨厌Docker。它很吓人--我不完全了解它,也不想了解。我喜欢 我的进程。我喜欢 写代码,并在我的机器上运行它,直接在金属上运行。我喜欢 写长长的 "READMEs",说明如何安装所有的依赖关系,处理我本地安装的Postgres,以及在本地协调许多不同的服务。等等...
我曾经认为Docker是无用的。我真的认为它就像Kubernetes一样:对于我的大多数用例来说都是过度设计的,而且无法相信人们真的在使用它。在我的一个项目中,我想使用Hasura。不幸的是,使用它的最好方法是使用Docker。"好吧",我哼了一声。我咬了咬牙,安装了Docker Desktop。
我讨厌它的每一秒钟,我复制了 "docker-compose "文件。仇恨在我的指尖流淌,我输入了 "docker-compose up "命令。我(愤怒地)等待着,因为docker开始从云中提取图像。当Postgres数据库和Hasura都在我的机器上无缝启动,并开始相互交谈,不需要我的干预时,我笑了。
等等!什么?就这么简单?我只需要复制docker-compose.yml文件,运行Docker-Compose,就可以了?我的数据库和服务器就这样在我的机器上运行了?这一定是个恶作剧。我在我的chrome浏览器中输入 "localhost:8080",迎接我的是Hasura管理屏幕。我打开我的DBAdmin(这不是赞助,但我用的是TablePlusfor Mac - 比PHPMyAdmin好得多。
我被迷住了。
我承认,我在docker的疯狂中有点堕落了。但它实在是太容易了。 有一天,我开始了一个新的项目,我希望能够进行orchistrate。
- 2个Postgres数据库
- 一个运行Postgraphile的Node.js项目
- 谷歌云功能的本地运行者
想象一下,在没有docker的情况下,让新工程师加入这个项目。我需要告诉他们,他们应该在本地创建两个Postgres数据库,安装node.js,以及如何在一个守护进程中运行Cloud Functions。这并不容易!我可以这么做,或者我可以直接解释如何安装docker并运行docker-compose。我不在乎他们使用的是M1或Intel Mac,Windows机器,任何Linux发行版,甚至是Chromebook(实际上我不确定最后一个,但我只能推测)。如果他们能让docker工作,他们就能在本地运行应用程序的全栈。
我很害怕学习docker,因为我认为这将是一个巨大的时间投资。有很多工作都是专门针对DevOps的,而Docker不就是一个dev-opsy类型的交易吗?我以为这将是一个为期数周的学习过程,我必须知道一堆东西才能写出Docker文件。
不是的。只要使用阿尔卑斯山的Linux,兄弟。安装好你的依赖项,你就可以开始了。你想让两个docker容器互相交流?写一个docker-compose。
相信我,这并不像它看起来那么难。我也想讨厌它,我真的想--我想成为开发社区的一个时髦人物。"不,伙计,我不使用docker😎,我只是手动协调一切,并浪费了许多开发时间来解决他们机器上的项目设置问题。"
我真的认为它对任何人都是有用的,不仅仅是后端开发人员或Devops人员。至少要知道它有什么用处,所以如果你遇到docker可能解决的问题,你可能会向这只可爱的鲸鱼伸手。
docker是否适用于每一种情况?绝对不是。有些情况下,package.json就可以了,甚至部署一个可执行的二进制文件就可以了。如果你是单独工作,或在一个周末项目上工作,或只是尝试一些新技术,为什么不呢?你会在你的原始计算机上产生一些开销,但谁在乎呢?这是你的电脑,在这样的情况下,你可能只是想快速开始学习。
不过,在任何情况下,如果你需要分享一个项目,或将一个项目部署到多台机器上,你都会想把它dockerize。这并不难,也不需要两小时的教程。我敢打赌,我可以在10分钟的文章中教授docker和docker compose。
如果你认为一篇关于前憎恶者的docker指南的文章对你有帮助,请留下评论