Изменить пользователя / группу для PHP-FPM (Docker)

#php #docker #docker-compose #bitnami

#php #docker #docker-compose #bitnami

Вопрос:

Я запустил контейнер docker php-fpm со следующей конфигурацией

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

php-fpm выполняется как daemon: daemon. Как правильно изменить пользователя / группу для контейнера? Например, запустите его как www: www…

Ответ №1:

Встроите это в свой образ 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
 

(Некоторые подробности о базовом изображении WORKDIR и CMD получены из поиска bitnami/php-fpm изображения в Docker Hub и, в свою очередь, перехода по ссылке на Dockerfile изображения.)

Тогда вашему docker-compose.yml файлу просто нужно указать детали, чтобы использовать этот Dockerfile. Вам не нужно volumes: ; код уже встроен в изображение.

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

На практике обычно не имеет большого значения, с каким конкретным идентификатором пользователя выполняется процесс контейнера, если он не является (или, в зависимости от ваших потребностей, является) специальным root пользователем (с идентификатором пользователя 0). Не должно быть разницы между процессом контейнера, выполняемым как daemon vs www . И наоборот, глядя на bitnami/php-fpm Dockerfile, для меня не очевидно, что что-либо может привести к тому, что контейнер не будет запускаться от имени root.