LINUX.ORG.RU
ФорумAdmin

Зпуск php-fpm в контейнере

 ,


0

1

В контейнере не запускается php-fpm. Вот мой докер-файл:

FROM ubuntu:20.04
RUN apt-get -y update && apt-get -y install net-tools \ 
&& apt-get -y install php php7.4-fpm && apt-get -y install nginx && rm -rf /var/lib/apt/lists/*
COPY default /etc/nginx/sites-available/default
COPY index.php /var/www/html/index.php
RUN chmod 644 /etc/nginx/sites-available/default && chmod 666 /var/www/html/index.php
EXPOSE 80/tcp
CMD ["php-fpm7.4", "--nodaemonize"]
CMD ["/usr/sbin/nginx", "-g", "daemon off;"]

И php-fpm не запускается в контейнере, хотя если выполнить: docker exec 5523aafe2a9e /usr/sbin/php-fpm7.4 Всё начинает работать.



Последнее исправление: iamsmasher (всего исправлений: 1)
Ответ на: комментарий от iamsmasher

Не надо костылей. Делай нормально: одно приложение - один контейнер. Т.е. тебе нужно два контейнера.

Конечно можно забить и запустить два приложения в одном контейнере. Напиши скрипт с вызовом php-fpm (в фоне) и nginx (не в фоне) и этот скрипт вызывай в ENTRYPOINT каком-нибудь.

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

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

Как докер будет узнавать, что надо перезапускать два+ сервиса в контейнере? Никак.

Как докер будет узнавать, что надо остановить два+ сервиса в контейнере? Никак.

Да и зачем это нужно вообще. Делаешь один контейнер с php-fpm, другой контейнер с nginx. Нет ни одной разумной причины пихать их в один контейнер.

emorozov
()

Вообще, рекомендую два способа:

  1. Открываешь документацию по docker и долго внимательно читаешь. Да, скучно и занудно, и дока по докеру написана так, чтобы только железный человек смог прочитать. Но всё равно рано или поздно придётся. Методом тыка освоить докер не получится.
  2. Открываешь https://cs.github.com, вбиваешь php-fpm path:Dockerfile или php-fpm path:*.yml, долго и вдумчиво изучаешь, сравниваешь друг с другом, может быть даже пытаешься развернуть у себя. Потом делаешь по аналогии.
emorozov
()
Последнее исправление: emorozov (всего исправлений: 1)