繁体   English   中英

更改 PHP-FPM (Docker) 的用户/组

[英]Change user/group for PHP-FPM (Docker)

我使用以下配置运行 docker php-fpm 容器

  php-fpm:
    tty: true
    image: bitnami/php-fpm:latest
    volumes:
      - ./www:/www

php-fpm 作为 daemon:daemon 运行。 如何正确更改容器的用户/组? 例如,将其运行为 www:www...

将此构建到您的 Docker 映像中。 在您的 Dockerfile 中:

FROM bitnami/php-fpm:latest # (Debian-based)

# Create the non-root runtime user.  It does not need a
# specific uid, shell, home directory, or other settings.
RUN adduser --system --no-create-home --group www

# Copy the files in as root, so they don't accidentally get
# overwritten at runtime
# (The base image sets WORKDIR /app)
COPY www ./

# Then set the runtime user
USER www

# The base image provides a useful CMD; leave it as is

(基本图像的WORKDIRCMD周围的一些细节来自在 Docker Hub 上查找bitnami/php-fpm图像,然后依次点击指向图像 Z3254677A71217C6C01FF5C2的链接。)

那么您的docker-compose.yml文件只需要指定详细信息即可使用此 Dockerfile。 您不需要volumes: 代码已经内置到图像中。

version: '3.8'
services:
  php-fpm:
    build: .
    # ports: ['9000:9000']
    # no volumes:

在实践中,容器进程运行的特定用户 ID 通常并不重要,只要它不是(或者,根据您的需要,是)特殊的root用户(用户 ID 为 0)。 作为daemon进程运行的容器进程与www之间应该没有区别。 相反,查看bitnami/php-fpm Dockerfile,对我来说并不明显有任何事情会导致容器无法以 root 身份运行。

我没有创建 Dockerfile,而是创建了一个 common.conf 文件:

user=www-data
group=www-data
listen.owner=www-data
listen.group=www-data

在 docker-compose.yml 中:

php:
  image: bitnami/php-fpm:8.0 # or any other
  ...
  volumes:
    # path to common.conf may differ if using a different image
    - ./path-to/common.conf:/opt/bitnami/php/etc/common.conf:ro

为了检查用户,我有一个 index.php:

<?php
echo exec('whoami');

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM