簡體   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