LINUX.ORG.RU
ФорумAdmin

Запуск php-fpm в Docker

 , ,


0

1

День добрый! Подскажите, такая проблема:

Собираю докер образ по следующему Docker - файлу:

FROM alpine:latest 
RUN apk add --no-cache php7 php7-fpm php7-amqp 
RUN addgroup -S dockerphp && adduser -S dockerphp -G dockerphp 

CMD ["php-fpm7"] 


Собирается без ошибок, после чего стартую командой
docker run -d --name container_7.2 alpine-latest


Контейнер собирается, запускается, и тут же завершается без ошибок (exit (0))

Если я в Dockerfile добавляю строку
CMD ["/bin/sh"]


и запускаю контейнер вот т ак
docker run -it -d --name container_7.2 alpine-latest


то он запускается, php-fpm как процесс в нем висит.

Подскажите, как нормально заюзать php-fpm в контйнере?


Задача стоит именно в запуске своего образа или вообще в надобности нормального NginX+php-fpm? По первому помочь не могу, по второму рулит: richarvey/nginx-php-fpm

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

Спасибо большое за ответ, но задача именно в запуске своего образа

Fess88
() автор топика
CMD ["php-fpm7", "--nodaemonize"]
anonymous
()

CMD ["rc-service php-fpm7 start"]

Это раз.

Второе. Порты не пробрасываешь? Конфиг дефолтный? Где скрипты пхп?

Ну и, RUN RUN мне не очень нравится.

Это что касается докера. Ты точно ман читал?

webmonkey
()

Лучшие докероводы рекомендуют исполняемый файл указывать в ENTRYPOINT

А директива CMD - это дефолтные аргументы, которые добавляются к вызову исполняемого файла

Например:

ENTRYPOINT /usr/sbin/php-fpm7.2
CMD ["--fpm-config", "/etc/php/7.2/fpm/php-fpm.conf"]

Если аргументы не передаются при обычном вызове, то и CMD не нужно.

Подробнее тут: https://docs.docker.com/engine/reference/builder/#understand-how-cmd-and-entr...

anonymous
()
Ответ на: комментарий от anonymous

Сорян, не могу отредактировать сообщение. Нужно обязательно указывать ENTRYPOINT в exec-from:

ENTRYPOINT ["/usr/sbin/php-fpm7.2"]
CMD ["--fpm-config", "/etc/php/7.2/fpm/php-fpm.conf"]

иначе CMD не будет работать

anonymous
()
Ответ на: комментарий от webmonkey

1. Перезапуском упавшего контейнера занимается сам docker (или кто вместо него главный)

Поэтому запускать fpm через сервис особо смысла не имеет. Кроме того, на минимальных образах этих сервисов вообще нету (

Все-таки суть контейнера - запустить напрямую бинарь.

2. RUN-RUN-RUN очень хорошо, когда пишешь докерфайл в первый раз и много чего меняешь )

Все-таки кэши на каждый чих^W RUN очень экономят время, когда идет установка большого числа пакетов.

Согласись, что оптимизацию можно сделать и потом, когда будет работающий докерфайл )

anonymous
()
Ответ на: комментарий от anonymous

Спасибо всем, разобрался!

Действительно, нужна была опция "--nodaemonize"

Fess88
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.