LINUX.ORG.RU

Сообщения root93

 

Docker и php worker`ы в контексте очередей (rabbitmq)

Добрый день!

Сразу оговорюсь, речь идет о dev-окружении, до прода еще далеко.

Хочу заюзать очереди. PHP 7.2 крутится на apache на чистом образе из Ubuntu 18.04 LTS. Управляю через docker-compose. Встал вопрос, а как запускать слушателя очереди (или демона-обработчика очереди), ведь один процесс - один контейнер и все такое ... ?

Ну как всегда есть вариант с Supervisor. Вариант знаком мне по предыдущим образам, там в основе как раз был image, который держал apache бэкграундным процессом с помощью Supervisor.

Дело вроде бы нехитрое и даже воркеров можно сколько угодно наплодить в одном контейнере, пока они всю память не выжрут, но что-то меня держит за душу. Ну и я всегда изучаю новое с прицелом «а как потом все таки в проде это будет работать».

Есть идея сделать каждый воркер отдельным контейнером, но возможно, будет геморрой, когда нужно будет убить воркер. Я про команду php artisan queue:restart. Она мягко убивает воркеров, чтобы не потерять задачи и высвобождает ресурсы. Как я понимаю, процедура эта потребуется часто, т.к. будут они со временем повисать и терять коннект к БД, в которую они должны писать инфу о проваленных задачах. Еще из минусов, вероятно, при большом количестве воркеров сильно вырастет docker-compose.yml, что не сильно приятно и удобно, хотя и не супер критично.

Кто подскажет, как такие вещи делают? Инфы мало нашел по теме, увы.

P.S. я мог быть неточен в терминологии или даже по-крупному что-то напутать, заранее прошу прощения, я только начинаю работать с очередями. К примеру, worker, в моем понимании - тот процесс, который выполнит задачу, но как он связан со слушателем очереди (или демоном-обработчиком очереди), я не очень представляю. Вроде бы как раз этот слушатель сам умеет управлять воркерами. Если считает, что тот умер, создаст нового (и тут не совсем понятно, как отработает supervisor). В общем поправьте, кто в теме.

P.S. уже напутал: тот процесс, который запускается с помощью php artisan queue:work - и есть «воркер», он же демон, при запуске с опцией --daemon. И именно его будет реанимировать supervisor. Неплохой перевод доки laravel по самим очередям https://laravel.ru/docs/v5/queues

 , , ,

root93
()

Как сделать пользователю песочницу?

Добрый день, нубский вопрос.

Есть сервер (centos7), на котором нужно дать FTP-доступ к папке с сайтом. На сервере закрыта авторизация по паролю через SSH, только по ключу. Дал доступ пользователю, но доступ у него теперь есть и за пределы папки с сайтом. Насколько я знаю, то что мне нужно называется chroot. Искать пробовал, очень туго ищется.

Как ограничить доступ только одной папкой (/var/www/site.com), и чтобы в другие он не мог выйти? При этом, чтобы ключ, который лежит в /home/username/... работал и давал ему авторизоваться.

Желательно минимальным количеством телодвижений, без сторонних утилит.

 

root93
()

Docker images, дистрибутивы ОС, должны ли быть одинаковыми?

Docker хост - alpine. Хочу поставить nginx из оф. образа, (FROM alpine:3.5), тут все ОК. Но когда мне захочется использовать другой image, который уже базируется на debian. Вот тут не совсем понятно...Ядро будет использоваться от хостового alpine linux, а как же разность дистрибутивов?

Получается, в контейнер попадут все потроха от debian? Это нормально? Или же нужно строить свой image тоже на alpine, если разработчик образа не предоставил такого варианта (бывает делают на разных ОС)? Есть ли разница и нужно ли заморачиваться по поводу базовых images? Есть ли ограничения?

И еще, имеет ли значение, какой linux на docker хосте? Скажем, у меня есть сервак с centos7, и я хочу на нем запускать все контейнеры, как от этого ситуация меняется?

 

root93
()

RSS подписка на новые темы