2016-11-23 1 views
1

У меня есть контейнеры nginx и php-fpm в Google Container Engine, и я хотел бы запустить его через unix-сокет вместо сети.Как запустить PHP в Kubernetes через unix socket?

У меня также есть контейнер Google Proxy и он использует пустой том для подключения к базам данных Google SQL через сокеты, размещенные на том томе, который используется совместно с другими контейнерами. Поэтому я думал использовать один и тот же подход для PHP, но он не работает.

У меня есть пустой объем пустого типа Dir, установленного на контейнеры php и nginx. Громкость установлена, я вижу это в обоих контейнерах. Но если я попытаюсь использовать nginx, я получу (сокет) файл, не найденный в журналах.

Я также добавил www-data (тот же uid, что и в php-контейнере) в контейнер nginx, и установил его в nginx conf, но это не помогло.

Является ли прокси-сервер Google SQL каким-то образом, и мне нужно использовать сеть для PHP, или я что-то упустил?

+0

Почему вы хотите использовать Unix-сокет? – svenwltr

+0

Вы не должны использовать emptyDir, я думаю. Используйте hostVolume для монтирования ваших UNIX-сокетов. – iamnat

ответ

1

Мне удалось получить описанный вами подход. Я использую в deploymentemptyDir поэтому общая /sock папка монтируется как к Nginx и FPM:

- name: fpm 
    ... 
    volumeMounts: 
    - name: php-socket 
     mountPath: /sock 
    ... 

    - name: nginx 
    ... 
    volumeMounts: 
    - name: php-socket 
     mountPath: /sock 
    ... 

    volumes: 
    - name: php-socket 
    emptyDir: {} 

Я нашел эту статью полезной для фактического Nginx и футов в минуту конфигурации: https://medium.com/@shrikeh/setting-up-nginx-and-php-fpm-in-docker-with-unix-sockets-6fdfbdc19f91

Загвоздка я ударил был файл в моей конфигурации контейнера док-станции php-fpm под названием zz-docker.conf, который содержит listen = [::]:9000. Так как имя файла в алфавитном порядке высокое, оно перекрывает мой другой файл конфигурации, останавливая работу связи сокета unix (т. Е. listen = /sock/php.sock). Я удалил проблемную линию, используя это в Dockerfile:

sed -i -e ‘/listen/d’ /usr/local/etc/php-fpm.d/zz-docker.conf 
Смежные вопросы