【问题标题】:How to run php-fpm as root in docker如何在 docker 中以 root 身份运行 php-fpm
【发布时间】:2019-10-17 02:05:43
【问题描述】:

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

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

【问题讨论】:

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

标签: php docker


【解决方案1】:

如果您检查默认的 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 的安全风险。我将上述配置仅用于开发目的。

【讨论】:

    【解决方案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# 
    

    【讨论】:

      猜你喜欢
      • 2014-08-15
      • 1970-01-01
      • 1970-01-01
      • 2019-06-24
      • 1970-01-01
      • 1970-01-01
      • 2010-09-15
      • 1970-01-01
      • 2019-10-27
      相关资源
      最近更新 更多