将nginx和php运行到具有适当用户开发的容器中

时间:2018-02-10 07:06:39

标签: php docker nginx

我已经在自己的容器上安装并配置了nginx + php-fpm。一切正常,除了一件事:它们与用户www-data(id:82)和同一组一起运行。 因此,挂载到容器的主机文件具有错误的用户/组(我的主要用户为1000:1000)。

如何运行这些容器能够以用户1000:1000?

的方式操作文件

2 个答案:

答案 0 :(得分:0)

为此,您必须通过 docker-file 在容器中定义特定用户和组。

Dockerfile

FROM php:7.1.6-fpm
RUN useradd -r -m -s /usr/sbin/nologin -g username -u 1000 username

ADD start-up /usr/local/bin/start-up
RUN chmod 0777 /usr/local/bin/start-up -R
ENTRYPOINT /usr/local/bin/start-up

然后你必须改变php的start-up脚本

sed -i s/'user = www-data'/'user = username'/g /usr/local/etc/php-fpm.d/www.conf
sed -i s/'group = www-data'/'group = username'/g /usr/local/etc/php-fpm.d/www.conf

我在我的项目及其工作中使用它。

答案 1 :(得分:0)

用户的ID可以在图像中更改,以便为此目的映射主机用户的ID。

php-fpm-alpine 的示例:

RUN apk add shadow && usermod -u 1000 www-data && groupmod -g 1000 www-data

由于nginx以root身份运行(容器的root和主机的根目录),因此无需使用UID进行操作