Я хочу поделиться php-fpm.sock
между nginx и PHP. То, как я это сделал прямо сейчас, выглядит примерно так:
services:
nginx:
build:
context: .
dockerfile: docker/nginx.docker
ports:
- '8080:80'
volumes:
- type: volume
source: php_fpm_sock
target: /mnt/sock
consistency: delegated
read_only: true
volume:
nocopy: true
links:
- php
php:
build:
context: .
dockerfile: docker/php.docker
links:
- mariadb
env_file: .env
volumes:
- type: volume
source: php_fpm_sock
target: /mnt/sock
consistency: delegated
read_only: false
volume:
nocopy: true
volumes:
php_fpm_sock:
т.е. я переместил файл носка из его обычного местоположения (/var/run/php5-fpm.sock
) в /mnt/sock
, потому что не могу понять как монтировать один файл, а я не хочу монтировать весь /var/run
dir.
Во-вторых, я настроил php -fpm как:
[www]
listen = /mnt/sock/php-fpm
;listen.owner = www-data
;listen.group = nginx
; php-fpm runs as `www-data`, nginx runs as `nginx`
listen.mode = 0664
, т.е. Я дал «другим» права на полное чтение, потому что пользовательская группа nginx
не существует в контейнере php -fpm, поэтому я не знаю, как еще я могу дать разрешения только для nginx.
Все это выглядит довольно забавно. Итак, мои вопросы:
- Как я могу поделиться только файлом sock между этими двумя контейнерами, чтобы я мог переместить файл sock обратно в
/var/run/php5-fpm.sock
- Как я могу исправить разрешения на чтение этого файла, чтобы только nginx мог его прочитать? то есть как можно разделить linux учетные записи пользователей между контейнерами?
Я также могу добавить nginx
пользователя в php -fpm изображение,
RUN useradd -r -s /usr/sbin/nologin -c "Nginx service" -U nginx -u 101
И , затем Я могу правильно установить разрешения. UID должен совпадать для обоих изображений, иначе он не будет работать, поэтому я установил его явно. Если бы 101
уже использовалось для PHP, думаю, у меня снова будут проблемы, поэтому я тоже не люблю это решение.