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

时间:2019-10-17 02:05:43

标签: php docker

当我在docker中运行php-fpm时,默认帐户为www-data,但我想以root身份在docker中运行。

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

2 个答案:

答案 0 :(得分:2)

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

首先,找到 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# 

答案 1 :(得分:0)

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

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

services:
  fpm:
    image: php:7.3-fpm
    volumes:
      - ./zzz-docker.conf:/usr/local/etc/php-fpm.d/zzz-docker.conf # Mount FPM config that runs FPM as root
    command: php-fpm -R # Allow running FPM as root

配置文件非常简单:

; 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 的安全风险。我仅将上述配置用于开发目的。