我是 docker 哲学的忠实粉丝(或者至少我认为我是)。即便如此,我仍然是新手,因为我似乎没有掌握使用 docker 的预期方式。
正如我目前所看到的,有两种使用 docker 的方法。
- 创建一个容器,其中包含应用程序所需的一切。
- 例如,我想要一个 Drupal 站点之类的东西。然后我会将 nginx、php、mysql 和代码放入一个容器中。我可以在 swarm 模式下将其作为服务运行并根据需要对其进行扩展。如果我需要另一个 Drupal 站点,我会运行第二个容器/服务,其中包含 nginx、php 和 mysql 以及(稍微)不同的代码。我现在需要 2 个图像来运行容器或服务。
- Pro's - 简单,我需要的一切都在一个容器中
- Con's - 无法在端口 80 上运行每个容器(因此需要反向代理或其他东西)。(不确定,但我可以想象)服务器负载更高,因为有多个容器/服务运行 nginx、php 和 mysql。
- 创建 4 个单独的容器。1 个 nginx 容器、1 个 php 容器、1 个 mysql 容器和 1 个代码/数据容器。
- 例如,我想要同一个 Drupal 站点。我现在可以将它们全部作为单独的服务运行,并随着代码容器(Drupal 站点或其他站点)数量的增加在我的服务器上扩展它们。我只需要每个容器/服务一个图像,而不是每个站点一个单独的图像。
- Pro's - 模块化,每个服务的单一职责(1 个用于数据库,1 个用于 Web 服务器等),易于仅扩展需要扩展的区域(如果请求增加,则扩展数据库,如果流量增加,则扩展 nginx 等)。
- 缺点-我不知道如何使这项工作:)。
我个人会选择根据第二个选项进行设置。有一个数据库容器/服务、nginx 容器/服务等。这对我来说似乎更灵活,也更有意义。
但是,我正在努力解决如何使这项工作。如何让 nginx 服务查看 php 服务并将 nginx 配置指向数据服务中的代码文件夹等。我已经阅读了一些关于覆盖网络的内容,但这并不清楚 nginx 将如何查找 php在单独的容器/服务中。
因此,我有 2 个(半个)问题:
- 如何使用 docker(上面的选项 1 或 2 或完全不同)?
- 如何将服务链接在一起(让 nginx 在不同的服务中查找 php)?
- (一半)我知道我是一个试图掌握这个概念的初学者,但设置一个简单的网络服务器和运行网站似乎是一项基本任务(至少,它以传统方式对我来说)但我似乎找不到我的答案随时随地在线。我认为我想使用 docker 的方式完全不符合标准,还是我看起来不够好?