我有一台 Debian 服务器,有多个用户。我想让他们能够使用多个版本的 PHP-CLI。
我知道我可以用安德烈·帕帕,但我不太愿意添加非官方的 apt 源。
我考虑使用 rootless 模式下的 podman 来实现这一点。这样我就必须为每个用户安装并运行每个 php 版本容器。
我可以将每个 php 版本容器设为一个服务但要做到这一点,容器需要在根上安装。
您建议的方法是什么?
答案1
如果您的基础系统是 Debian,那么您需要的是 DPA,而不是 PPA。Ondrej 有一个 DPA,其中包含基本相同的软件包:
https://deb.sury.org/
https://packages.sury.org/php/README.txt
如果你正在制作自己的镜像,你可以选择使用 Debian 或其他东西作为基础,但你需要相应地调整 PHP 源。还有一个官方 PHP 镜像来自 Docker Hub,但它缺少很多扩展,因此您可能需要从中派生以安装更多扩展。
为了PHP命令行工具,您无需将容器设置为服务。将要运行命令的主机文件夹挂载到容器的工作目录上,然后调用该命令。如下所示:
podman run --rm -it -w /mnt -v .:/mnt php-image php --version
将其替换php --version
为您想要在容器中运行的任何命令。容器运行该命令后立即停止。然后,交换机将--rm
删除不再需要的容器(下次需要时将创建一个新的容器)。
您可以将其包装在辅助脚本中以使其更加方便。
为了PHP-FPM,要将容器作为服务运行,您可以编写自定义SystemD .service 文件(或者只是一些脚本)根据需要启动/停止容器。然后通过容器上暴露的端口连接到它。
您不需要 root 权限就可以使用 Podman 执行任何操作。