【问题标题】:How to deploy php-fpm on docker container and apache/nginx on localhost (Ubuntu)如何在 docker 容器上部署 php-fpm 并在 localhost (Ubuntu) 上部署 apache/nginx
【发布时间】:2020-05-08 18:29:42
【问题描述】:

我们可以将 apache 和 php 部署在单独的 docker 容器中,然后链接它们。

但是有没有办法在本地安装 apache(使用 apt-get install apache2)和 docker 容器中的 php-fpm 然后链接它们?

谢谢

【问题讨论】:

    标签: php apache docker ubuntu nginx


    【解决方案1】:

    是的。由于您将 php-fpm 与 A​​pache as you should(而不是 mod_php)一起使用,因此您将在基于 Docker 的 Apache 站点配置中拥有与此类似的内容:

      <FilesMatch \.php$>
        SetHandler "proxy:fcgi://php-fpm-container:9000"
      </FilesMatch>
    

    当 php-fpm 和 apache 在单独的 docker 容器中运行时,上述方法有效; php-fpm-container 指的是 php-fpm 容器。

    在主机上运行 Apache,在 Docker 中运行 php-fpm:

    只要您的 Docker php-fpm 容器向主机公开端口 9000,Apache 就不会知道或关心该端口是从主机还是从 docker 内部提供的。

    您的 apache 站点配置需要修改为指向 localhost:

      <FilesMatch \.php$>
        SetHandler "proxy:fcgi://localhost:9000"
      </FilesMatch>
    

    顺便说一句,这是在一个主机和一个 Apache 服务器上运行多个不同 PHP 版本的一种非常简洁的方法。只需将每个 php-fpm 容器暴露在不同的端口(可能是 9001、9002 等)上。

    【讨论】:

    • 我应该补充一点,如果您的 PHP 代码需要写入文件系统(几乎可以肯定任何 PHP 框架都会如此),您的 PHP 容器将需要从您的主机中为这些目录挂载。
    【解决方案2】:

    您可以构建自己的镜像,在 Dockerfile 中您可以apt install ...

    但这里也有一个带有 apache + php-fpm 的官方图片:https://hub.docker.com/_/php

    所以你不必这样做。它准备好了。


    但我相信它可以通过公开您的 php-fpm 端口并将您的 apache FastCgiExternalServer 配置到此端口而不是 unix 套接字来工作。

    【讨论】:

    • 我认为没有官方的php-fpm+apache镜像,恐怕你得自己酿造
    猜你喜欢
    • 2014-12-02
    • 2017-09-16
    • 2022-12-10
    • 2022-01-14
    • 2017-02-03
    • 2021-06-26
    • 2020-08-27
    • 2019-05-21
    • 2019-11-19
    相关资源
    最近更新 更多