Для чего делать отдельный контейнер под php-cli?

Ссылка скопирована
1 ответ

ДД. Изучаю Docker, многое еще не знаю. Увидел пару кейсов, когда в docker-compose файле отдельные контейнеры для php-cli и php-fpm.
Конкретно интересно понять полезность для Laravel-based проектах.

Дополнительно:

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

  • Это понятно. Но мне не совсем понятно зачем делают помимо php-fpm контейнеров, еще cli контейнер. Какие его задачи?
  • Flexi, кто делает-то? Ни разу нигде не видел например.
  • мне показалось что он имеет ввиду разные 2 разных контейнера под fpm и cli
  • Владислав Лысков, да, именно так.
  • Flexi, тоже ни разу не видел что кто-то так делает, если на это и есть причины, но это не не типичный случай
  • Александр Аксентьев, Владислав Лысков, например: тыц, тыц

    Может я конечно что-то не понимаю)

  • Flexi, возможно, кому-то хочется запускать некие скрипты непосредственно из командной строки - по таймеру или ещё как-то. Для этого и можно, например, дёрнуть контейнер с php-cli docker exec`ом.
  • Flexi, очень авторитетные источники вопросы на хабре от людей которые не могут поднять, то что сами там слепили)

    Может они уже узнали с тех пор что можно запускать что-либо через php-cli прямо из fpm контейнера.

  • Flexi, посмотрим, может кто-нибудь более прошаренный расскажет
  • ky0, в принципе в это есть какая-то логика, но как написал Александр Аксентьев в fpm контейнере тоже можно запускать скрипты.
  • Flexi, и в fpm можно запускать скрипты, не вижу проблем, у меня самого
    docker compose up -d php  ### &&  docker compose exec php composer install &&  docker compose exec php php artisan migrate &&  ###

    docker compose up -d php ### && docker compose exec php composer install && docker compose exec php php artisan migrate && ###

    прекрасно отрабатывает.
    Вот если, как правильно заметил pantsarny , нужно другое окружение, например версия php или другой volume, или какие-то особые требования к ресурсам и/или безопасности - тогда да, можно и отдельно.

Для разделения ресурсов системы

  • В кли могут быть запущены долгоживущие процессы, возможно с утечкой памяти, или с высокой нагрузкой ЦПУ. Также может требоваться другой набор библиотек или окружения. С помощью отдельного контейнера можно решить эти вопросы

Ответы:

LAMP/LEMP стек прекрасно и без докеров живёт. Если автор никак не объясняет такое разделение, то скорее всего от нечего делать.

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Мария Код Ответ

Делать отдельный контейнер под PHP-CLI может быть полезно по нескольким причинам:

1. Изоляция окружения: Когда вы запускаете PHP скрипты из командной строки, вы можете столкнуться с конфликтами версий PHP или зависимостей, если у вас уже установлен другой PHP на вашем сервере. Создание отдельного контейнера под PHP-CLI позволит избежать этих конфликтов, так как в контейнере будет установлена конкретная версия PHP и все необходимые зависимости.

2. Удобство разработки и тестирования: Работа с PHP из командной строки может быть удобна при разработке и тестировании скриптов, например, скриптов для автоматизации задач. При этом у вас будет возможность быстро создавать и запускать контейнеры с необходимым окружением, что упростит процесс разработки.

3. Повышение безопасности: Использование отдельного контейнера для PHP-CLI поможет уменьшить риски безопасности, так как вы можете контролировать доступ к файлам и ресурсам, к которым имеет доступ PHP из командной строки. Это особенно важно, если вы работаете с конфиденциальными данными или выполняете скрипты с повышенными привилегиями.

Пример использования контейнера для PHP-CLI:

# Создание Dockerfile для контейнера с PHP-CLI
FROM php:7.4-cli
 
# Установка дополнительных зависимостей, если необходимо
RUN apt-get update && apt-get install -y \
    git \
    zip \
    unzip
 
# Копирование исходного кода приложения в контейнер
COPY . /usr/src/myapp
WORKDIR /usr/src/myapp
 
# Установка зависимостей приложения
RUN composer install
 
# Запуск PHP скрипта
CMD ["php", "script.php"]

# Создание Dockerfile для контейнера с PHP-CLI FROM php:7.4-cli # Установка дополнительных зависимостей, если необходимо RUN apt-get update && apt-get install -y \ git \ zip \ unzip # Копирование исходного кода приложения в контейнер COPY . /usr/src/myapp WORKDIR /usr/src/myapp # Установка зависимостей приложения RUN composer install # Запуск PHP скрипта CMD ["php", "script.php"]

Таким образом, создание отдельного контейнера под PHP-CLI может помочь вам упростить разработку, обеспечить изоляцию окружения и повысить безопасность ваших PHP скриптов, запускаемых из командной строки.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно