如何在 docker 容器上部署 php-fpm,在 localhost (Ubuntu) 上部署 apache/nginx

Ris*_*shi 4 php apache ubuntu nginx docker

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

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

谢谢

jef*_*f-h 7

是的。由于您使用的PHP-FPM与Apache ,你应该(而不是mod_php的),你会在你的基于多克的Apache站点配置类似于此:

  <FilesMatch \.php$>
    SetHandler "proxy:fcgi://php-fpm-container:9000"
  </FilesMatch>
Run Code Online (Sandbox Code Playgroud)

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

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

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

您的 apache 站点配置需要修改为指向本地主机:

  <FilesMatch \.php$>
    SetHandler "proxy:fcgi://localhost:9000"
  </FilesMatch>
Run Code Online (Sandbox Code Playgroud)

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


RAS*_*ASG 3

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

但这里还有一个带有 apache + php-fpm 的官方镜像: https: //hub.docker.com/_/php

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


但我相信它可以通过暴露你的php-fpm端口并将你的 apache FastCgiExternalServer 配置到这个端口而不是 unix 套接字来工作。

  • 我认为没有官方的 php-fpm+apache 镜像,恐怕你必须自己制作它 (8认同)
  • @larsks 有 apache (内置 php) 或 php-fpm,但不是二合一 (5认同)