Как запустить docker контейнер от не root пользователя? - PullRequest
0 голосов
/ 28 февраля 2020

Как сделать так, чтобы контейнер docker работал как пользователь, не являющийся root, и имел рабочий каталог (и его файлы), принадлежащий пользователю, не являющемуся root. Варианты, которые я мог найти в различных онлайн-учебниках, по какой-то причине не работали, файлы в /var/www по-прежнему будут принадлежать root root.

Ниже мой Dockerfile, я использую docker-compose для сборки и запустить контейнеры. Хост-система Windows 10.

FROM php:7.4-fpm

ARG user
ARG uid

RUN apt-get update && apt-get install -y \
    libpng-dev \
    libonig-dev \
    libxml2-dev \
    zip \
    unzip

RUN apt-get clean && rm -rf /var/lib/apt/lists/*

RUN docker-php-ext-install pdo_mysql mbstring exif pcntl bcmath gd

COPY --from=composer:latest /usr/bin/composer /usr/bin/composer

WORKDIR /var/www

USER $user

Ответы [ 2 ]

1 голос
/ 29 февраля 2020

Вы можете попробовать этот docker файл

FROM php:7.4-fpm

ARG user
ARG uid

RUN apt-get update && apt-get install -y \
    libpng-dev \
    libonig-dev \
    libxml2-dev \
    zip \
    unzip

RUN addgroup -g $uid $user && \
    adduser -S -G $user -u $uid -h $user

RUN apt-get clean && rm -rf /var/lib/apt/lists/*
RUN docker-php-ext-install pdo_mysql mbstring exif pcntl bcmath gd
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer

RUN chown $user:$user -R /var/www

WORKDIR /var/www

USER $user

Это изменение необходимо, чтобы убедиться, что пользователь создан в docker образе

RUN addgroup -g $uid $user && \
    adduser -S -G $user -u $uid -h $user

Это необходимо сменить владельца файлов на нового пользователя

RUN chown $user:$user -R /var/www
1 голос
/ 28 февраля 2020

Просто добавьте

RUN chown $user:$user -R /var/www

перед вашей инструкцией WORKDIR. Точно так же вы можете изменить владельца для других мест по мере необходимости.

...