Docker让我感到害怕,但docker-compose并不可怕

这篇文章的目标受众

这篇文章是为了向我的工程师同事们写的。
对于那些还没有接触过Docker的人来说,我将简要描述使用Docker作为开发环境的吸引力。

再次强调,我不会在工作中提及不应被记录的事情,并且我会以不会引起问题的程度来处理并在互联网上公开。

忙碌的人只需看最后一步,即可满意。

Web应用程序的开发环境

在开发WEB应用程序时,通常需要以下最基本的环境准备。

    • プログラミング言語の コンパイラ or インタプリタ

 

    • WEBサーバ(特に複数のWEBアプリケーションを開発する場合やより本番構成に近くする為)

 

    ミドルウェア類(RDBMSやKVS、Elasticsearchなど)

在准备环境时,通常会在开发机器上准备这些操作环境,但更进一步分类的话,一般会使用以下三个模式之一来进行开发。

    • Windows や Mac などに直接環境を構築する

 

    • VirtualBoxやHyper-VにVM(Debian系やCentOS系)を用意し、VMマシン上に環境を構築する

 

    Docker環境を構築し、各種環境をDockerコンテナとして構築・動作させる

对于这三种模式,个人的看法如下评价。

如果要建立直接的环境

这是最不应该做的情况。

如果在主机上进行环境搭建,将会导致软件版本管理的困惑。为了避免这个问题,我们需要根据自己机器上的软件版本来开发网络应用程序,这可能会导致大量含有漏洞的软件的生产。

如果要在虚拟机上构建环境

在VM上建立每个Web应用程序的环境,每当Web应用程序变化时,切换VM。
在主机和VM之间共享Web应用程序的源代码,通常将工作与主机分开,执行在VM上。

另外,根据我的过去经验,许多人并没有将RDBMS内的数据或WEB服务器的配置文件等共享到主机上。如果虚拟机发生故障,有快照的话可以从快照中恢复,如果没有的话就需要从零开始重新创建。

然而,快照已经出现了错误…(^ω^)

另外,若要在同一虚拟机上搭建多个网络应用开发环境,则与上述”▼直接搭建环境”没有任何区别,没有任何意义。

以Docker容器形式进行构建和运行

我推荐这个。
关于机制将在后面进行详述。

应该选择哪个开发环境?

我认为可以选择喜欢的正直环境。
当然,我认为没有必要将现有的Web应用程序开发环境迁移到Docker。
(但是如果要迁移,因为它相对容易,所以迁移也是可以的…)

现在,本来的话题开始了,对于今后的开发,我强烈建议毫不犹豫地使用Docker。

在开发环境中使用Docker。

Docker 是什么?

在Docker中,我们将程序的执行环境和RDBMS等各种环境制作成Docker镜像。
将这个Docker镜像运行起来就叫做Docker容器。
Docker容器类似于将主机机器进行chroot并以进程形式运行的镜像。

在Docker中,通常将WEB应用程序的源代码和中间件的配置文件准备在主机上,并通过以下两种方式之一使其可以在Docker容器中使用。

    • 実行時に共有する(変更が多いWEBアプリケーションのソースコード等が該当)

Dockerイメージに予め入れておく(変更が少ないミドルウェアの設定ファイル等が該当)

此外,对于需要持久化的数据(如RDBMS等),也应将其放置在主机上,并设计RDBMS的Docker容器来对其进行更改。

以下的好评文章可供参考。

いまさらだけどDockerに入門したので分かりやすくまとめてみた(@gold-kou殿の記事)

【図解】Dockerの全体像を理解する -前編-(@kotaro-dr殿の記事)

尽管Docker非常出色,但如果单独使用,就需要在命令行上执行冗长的命令来运行它。实在是太麻烦了,对于开发来说,运维工作也很辛苦…
我觉得大部分对Docker抱有偏见或者尝试过但感觉很难的人在这里就放弃了。

好的,现在我们将使用docker-compose来解决这个问题。

Docker Compose是什么意思?

在Web应用程序开发中,通常会使用Docker容器来集成运行多个容器,因此使用名为docker-compose的编排工具是常见的。

以下的好评文章可以作为参考。

docker-composeを使うと複数コンテナの管理が便利に(@y_hokkey殿の記事)

使用docker-compose可以方便地管理Docker容器,并能够协同多个容器一起运行,这在某种意义上也能实现类似虚拟机的功能。

如果使用VM,需要为每个VM分配CPU核心和内存,但通过使用Docker + docker-compose,可以在一台虚拟硬件上运行多个VM的相应功能变为可能。

换句话说,通过使用docker-compose为每个项目(或Web应用程序)构建,就可以避免切换虚拟机的麻烦,这将使Web应用程序工程师感到满意。

那么我公司推荐的Docker开发方法是什么?

最近几年,使用PHP的WAF中的Laravel正在日益增加。
如果要使用Docker进行Laravel开发,个人认为只有Laradock一种选择。

主要原因是… shì…)

    • ドキュメントがしっかり整備されている(英語だけど)

 

    • 超たくさん色々なミドルウェアが整備されている(Laravelの$\tiny{ほぼ}$すべての機能を利用できる)

 

    • 活発に更新されている

 

    • めちゃめちゃ簡単に動かせる(主に環境変数ファイルとdocker-compose.ymlファイルだけ触ればよい)

 

    筆者が慣れているため社内に提供できる情報が多い

【Laradock官方页面链接】

在使用Win10 Home + Docker Toolbox运行Laradock时可能会遇到一些问题,这点让人有些困扰…(^ω^)

广告
将在 10 秒后关闭
bannerAds