默认情况下,PHP-FPM和Nginx使用特定的用户/组。PHP-FPM的用户和组被设置为www-data ,而Nginx的用户在其配置中被设置为nginx 。在这个例子中,我们将把它改为inanzzz 。
当前配置
# www.conf
...
[www]
user=www-data
group=www-data
listen.owner=www-data
listen.group=www-data
...
# nginx.conf
...
user nginx;
...
新配置
# www.conf
...
[www]
user=inanzzz
group=inanzzz
listen.owner=inanzzz
listen.group=inanzzz
...
# Dockerfile
FROM php:7.2.13-fpm
....
# Create group "inanzzz"
# set group id "1000"
RUN groupadd -g 1000 inanzzz
# Create user "inanzzz"
# set user id "1000"
# assign to existing group id "1000"
# set home directory "/home/inanzzz"
# set shell "/bin/bash"
RUN useradd -d /home/inanzzz -s /bin/bash -u 1000 -g 1000 inanzzz
# Create home directory
RUN mkdir /home/inanzzz
# User and group own home directory
RUN chown -R inanzzz:inanzzz /home/inanzzz
USER inanzzz
CMD ["php-fpm", "--nodaemonize"]
Nginx
# nginx.conf
user inanzzz;
...
# Dockerfile
FROM nginx:1.15.7
...
# Create group "inanzzz"
# set group id "1000"
RUN groupadd -g 1000 inanzzz
# Create user "inanzzz"
# set user id "1000"
# assign to existing group id "1000"
# set home directory "/home/inanzzz"
# set shell "/bin/bash"
RUN useradd -d /home/inanzzz -s /bin/bash -u 1000 -g 1000 inanzzz
# Create home directory
RUN mkdir /home/inanzzz
# User and group own home directory
RUN chown -R inanzzz:inanzzz /home/inanzzz
# Necessary steps to avoid permission errors
RUN touch /var/run/nginx.pid \
&& chown -R inanzzz:inanzzz /var/run/nginx.pid /var/cache/nginx
USER inanzzz
我们的用户inanzzz 不像nginx 用户那样有特权,所以我们不能再使用默认的80 和443 端口,所以要对它们进行如下修改。在这个改变之后,如果你愿意,你可以在你的docker-compose.yml文件中使用'8081:8080' 和'4431:4443' 。
# Site virtualhost config
server {
listen 8080;
listen 4443 default_server ssl;
...
}
如果应用程序被链接到docker-compose.yml文件中的共享文件夹,你可以选择将/home/inanzzz 作为共享文件夹,这样新用户就拥有了该应用程序。