如何在docker中以root用户身份运行php fpm

如何在docker中以root用户身份运行php fpm,php,docker,Php,Docker,当我在docker中运行php fpm时,默认帐户是www数据,但我希望在docker中以root用户身份运行 我将配置文件、用户和用户组编辑为root用户,但我不知道如何添加-R。因此容器无法运行。以下是如何以root用户身份运行bash: root@e4689b3c1bc5:/var/www# 首先,查找php fpm的docker容器id: $ docker ps p, 0.0.0.0:8008->80/tcp webserver e4689b3c1bc5 p

当我在docker中运行php fpm时,默认帐户是www数据,但我希望在docker中以root用户身份运行


我将配置文件、用户和用户组编辑为root用户,但我不知道如何添加-R。因此容器无法运行。

以下是如何以root用户身份运行bash:

root@e4689b3c1bc5:/var/www# 
首先,查找php fpm的docker容器id:

$ docker ps

p, 0.0.0.0:8008->80/tcp   webserver
e4689b3c1bc5        php:7.2-fpm                            "docker-php-entrypoi…"   2 months ago        Up 41 hours         9000/tcp   

然后运行以下命令:

$ docker exec -u 0 -it e4689b3c1bc5 bash
然后,您可以作为root用户运行bash:

root@e4689b3c1bc5:/var/www# 

以下是如何以root用户身份运行bash:

root@e4689b3c1bc5:/var/www# 
首先,查找php fpm的docker容器id:

$ docker ps

p, 0.0.0.0:8008->80/tcp   webserver
e4689b3c1bc5        php:7.2-fpm                            "docker-php-entrypoi…"   2 months ago        Up 41 hours         9000/tcp   

然后运行以下命令:

$ docker exec -u 0 -it e4689b3c1bc5 bash
然后,您可以作为root用户运行bash:

root@e4689b3c1bc5:/var/www# 

如果您检查默认的PHP-FPM容器命令,您将看到它使用以下默认命令:
PHPFPM
。您可以轻松地将其重写为
phpfpm-R

对于
docker compose
,我使用以下配置:

服务:
fpm:
图片:php:7.3-fpm
卷数:
-/zzz-docker.conf:/usr/local/etc/php-fpm.d/zzz-docker.conf#挂载以root用户身份运行fpm的fpm配置
命令:php fpm-R#允许以root用户身份运行fpm
配置文件非常简单:

; Config to run PHP FPM as root (requires the -R flag to be passed to the entrypoint)
[www]
user = root
group = root
您可以构建一个自定义映像,将此配置文件添加到Dockerfile,而不是装载自定义配置并更改命令,它将如下所示:

FROM php:7.3-fpm

COPY ./zzz-docker.conf /usr/local/etc/php-fpm.d/zzz-docker.conf

CMD ["php-fpm", "-R"]
这些示例中的
zzz docker.conf
文件位于项目的根目录中


请记住,您应该了解以root用户身份运行PHP-FPM的安全风险。我使用上述配置仅用于开发目的。

如果您检查默认的PHP-FPM容器命令,您将看到它使用以下默认命令:
PHP-FPM
。您可以轻松地将其重写为
phpfpm-R

对于
docker compose
,我使用以下配置:

服务:
fpm:
图片:php:7.3-fpm
卷数:
-/zzz-docker.conf:/usr/local/etc/php-fpm.d/zzz-docker.conf#挂载以root用户身份运行fpm的fpm配置
命令:php fpm-R#允许以root用户身份运行fpm
配置文件非常简单:

; Config to run PHP FPM as root (requires the -R flag to be passed to the entrypoint)
[www]
user = root
group = root
您可以构建一个自定义映像,将此配置文件添加到Dockerfile,而不是装载自定义配置并更改命令,它将如下所示:

FROM php:7.3-fpm

COPY ./zzz-docker.conf /usr/local/etc/php-fpm.d/zzz-docker.conf

CMD ["php-fpm", "-R"]
这些示例中的
zzz docker.conf
文件位于项目的根目录中


请记住,您应该了解以root用户身份运行PHP-FPM的安全风险。我使用上述配置仅用于开发目的。

这不是一个好的安全实践。为什么您需要以root身份运行它?我希望我的php应用程序可以管理一些按root运行的文件。例如,我的aria2是按root运行的,但我的netClodu是按www数据运行的。我认为更安全的方法是使用用户
www data
启动aria2。这样,PHP的安全问题就不会危及系统中的所有文件,这不是一个好的安全做法。为什么您需要以root身份运行它?我希望我的php应用程序可以管理一些按root运行的文件。例如,我的aria2是按root运行的,但我的netClodu是按www数据运行的。我认为更安全的方法是使用用户
www data
启动aria2。这样,PHP的安全问题就不会危及系统中的所有文件。