在docker容器中使用自定义用户进行PHP-FPM和Nginx配置

752 阅读1分钟

默认情况下,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 用户那样有特权,所以我们不能再使用默认的80443 端口,所以要对它们进行如下修改。在这个改变之后,如果你愿意,你可以在你的docker-compose.yml文件中使用'8081:8080''4431:4443'

# Site virtualhost config

server {
    listen 8080;
    listen 4443 default_server ssl;

    ...
}

如果应用程序被链接到docker-compose.yml文件中的共享文件夹,你可以选择将/home/inanzzz 作为共享文件夹,这样新用户就拥有了该应用程序。