Varsayılan olarak PHP-FPM ve Nginx belirli bir kullanıcı/grup kullanır. Yapılandırma ayarlarında PHP-FPM kullanıcısı ve grubu www-data olarak, Nginx kullanıcısı ise nginx olarak ayarlanmıştır. Biz bunu bu örneğimizde inanzzz olarak değiştireceğiz.


Mevcut yapılandırma


PHP-FPM


# www.conf

...
[www]

user=www-data
group=www-data

listen.owner=www-data
listen.group=www-data

...

Nginx


# nginx.conf

...

user nginx;

...

Yeni yapılandırma


PHP-FPM


# 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

Yeni kullanıcı inanzzz diğer kullanıcı nginx'in ayrıcalıklarına sahip olmadığından, varsayılan 80 ve 443 portlarını kullanamayız. Aşağıdaki değişikliklerden sonra docker-compose.yml dosyasında '8081:8080' ve '4431:4443' portlarını kullanabilirsiniz.


# Site virtualhost config

server {
listen 8080;
listen 4443 default_server ssl;

...
}

Uygulama klasörü eğer docker-compose.yml dosyası içindeki paylaşılan bir klasör olarak ayarlanmışsa, yeni kullanıcının bu uygulamanın sahibi olması için /home/inanzzz bölümünü paylaşılan klasör olarak değiştirebilirsiniz.