0

我是 docker 哲学的忠实粉丝(或者至少我认为我是)。即便如此,我仍然是新手,因为我似乎没有掌握使用 docker 的预期方式。

正如我目前所看到的,有两种使用 docker 的方法。

  1. 创建一个容器,其中包含应用程序所需的一切。
    • 例如,我想要一个 Drupal 站点之类的东西。然后我会将 nginx、php、mysql 和代码放入一个容器中。我可以在 swarm 模式下将其作为服务运行并根据需要对其进行扩展。如果我需要另一个 Drupal 站点,我会运行第二个容器/服务,其中包含 nginx、php 和 mysql 以及(稍微)不同的代码。我现在需要 2 个图像来运行容器或服务。
    • Pro's - 简单,我需要的一切都在一个容器中
    • Con's - 无法在端口 80 上运行每个容器(因此需要反向代理或其他东西)。(不确定,但我可以想象)服务器负载更高,因为有多个容器/服务运行 nginx、php 和 mysql。
  2. 创建 4 个单独的容器。1 个 nginx 容器、1 个 php 容器、1 个 mysql 容器和 1 个代码/数据容器。
    • 例如,我想要同一个 Drupal 站点。我现在可以将它们全部作为单独的服务运行,并随着代码容器(Drupal 站点或其他站点)数量的增加在我的服务器上扩展它们。我只需要每个容器/服务一个图像,而不是每个站点一个单独的图像。
    • Pro's - 模块化,每个服务的单一职责(1 个用于数据库,1 个用于 Web 服务器等),易于仅扩展需要扩展的区域(如果请求增加,则扩展数据库,如果流量增加,则扩展 nginx 等)。
    • 缺点-我不知道如何使这项工作:)。

我个人会选择根据第二个选项进行设置。有一个数据库容器/服务、nginx 容器/服务等。这对我来说似乎更灵活,也更有意义。

但是,我正在努力解决如何使这项工作。如何让 nginx 服务查看 php 服务并将 nginx 配置指向数据服务中的代码文件夹等。我已经阅读了一些关于覆盖网络的内容,但这并不清楚 nginx 将如何查找 php在单独的容器/服务中。

因此,我有 2 个(半个)问题:

  1. 如何使用 docker(上面的选项 1 或 2 或完全不同)?
  2. 如何将服务链接在一起(让 nginx 在不同的服务中查找 php)?
  3. (一半)我知道我是一个试图掌握这个概念的初学者,但设置一个简单的网络服务器和运行网站似乎是一项基本任务(至少,它以传统方式对我来说)但我似乎找不到我的答案随时随地在线。我认为我想使用 docker 的方式完全不符合标准,还是我看起来不够好?
4

1 回答 1

1

如何使用 docker(上面的选项 1 或 2 或完全不同)?

由你决定,我更喜欢使用选项 #2,但我有时也会混合使用选项 #1 和选项 #2。所以这一切都取决于用例以及哪些选项看起来更适合用例。在我们的一个客户中,需要将 SSH 和 Nginx、PHP 都放在同一个容器中。所以我们混合了#1 和#2。Mysql,redis在自己的容器上,app在一个容器上

如何将服务链接在一起(让 nginx 在不同的服务中查找 php)?

用于docker-compose定义您的服务并docker stack部署它们。您不必担心服务的名称

version: '3'
services:
  web:
    image: nginx
  db:
    image: mysql
    environment:
      - "MYSQL_ROOT_PASSWORD=root"

现在部署使用

docker stack deploy --compose-file docker-compose.yml myapp

在您的nginx容器中,您可以使用 mysql 的 service name 来访问它db。所以链接会自动发生,您不必担心。

我知道我是一个试图掌握这个概念的初学者,但设置一个简单的网络服务器和运行网站似乎是一项基本任务(至少,它以传统方式对我来说)但我似乎无法在任何地方在线找到我的答案。我是否完全不符合我认为我想使用 docker 的方式,或者我看起来不够好

有很多好的资源以文章的形式提供,你只需要看看

于 2017-09-11T10:01:38.197 回答