gpt4 book ai didi

kubernetes - 如何在 Kubernetes 中的 nginx 和 php-fpm 容器之间正确共享应用程序文件夹?

转载 作者:行者123 更新时间:2023-12-04 21:05:16 29 4
gpt4 key购买 nike

我有 public 的 php 应用程序文件夹,其中包含 index.php将php请求作为静态文件处理。

我想直接通过 nginx 容器传递静态文件,只使用 php-fpm 传递动态请求。

怎样才能做到这一点?据我了解,有两种方法:

  • 创建两个具有相同应用程序文件夹的单独容器:第一个容器将使用 nginx,它提供静态请求并将动态请求委托(delegate)给第二个容器,php-fpm 将位于该容器。
  • 第二种解决方案是使用 persistentVolumeClaim ,但这也需要某种魔法来进行同步(initContainers)。

  • 最佳做法是什么?

    最佳答案

    让我们首先说有 2 个 pod,即 Nginx Pod 和 Php pod。
    现在有两件事需要与这些 pod 相关联。

  • 静态文件(公用文件夹)
  • 配置文件(nginx.conf)

  • 我更喜欢对静态文件使用 Persistent Volume 声明,对配置文件使用 ConfigMap。

    您的问题的解决方案。

    php pod 将有以下 k8s 资源
  • 部署(容器)
  • 服务(在内部公开)
  • PersistentVolumeClaim(用于公用文件夹)
  • ConfigMap(环境变量,如数据库信息)

  • Nginx pod 将具有以下 k8s 资源
  • 部署(容器)
  • 服务(在内部或外部公开)
  • ConfigMap(自定义 nginx.conf)

  • 现在 Deployment Resouces 将与其他资源有关系,例如 Persistent volume claim 和 configmap 等。

    正如我对 InitContainer 的理解,它帮助 Pod 拥有一致的网络命名空间以及为主容器组织文件系统,它为主容器提供所有必要的资源,例如服务帐户、pvc、configmap。

    例如,如果主容器重新启动,则 init 容器确保 IP 地址不会更改。但是,如果您再次创建 pod,则意味着您正在再次创建 initcontainer,那么 Pod 将拥有新的 IP 地址。

    关于kubernetes - 如何在 Kubernetes 中的 nginx 和 php-fpm 容器之间正确共享应用程序文件夹?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47660975/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com