Я использую Docker Swarm для своего приложения laravel.
У меня есть служба под названием app
, расширяющая официальное изображение php , которая содержит исходный код моего основного приложения плюс php-fpm и может быть масштабирована.при необходимости.
Я хочу запускать набор команд оболочки каждый раз, когда создается контейнер, и некоторые команды (например, pre-complice opcache в память) ДОЛЖНЫ выполняться после запуска процесса php-fpm.
на самом деле мне удалось сделать что-то, что работает, но мне кажется наивным, и PID php-fpm не 1
Я использую этот код в точке входа в контейнеры:
#!/bin/bash
set -m
exec php-fpm &
#
#commands goes here
php artisan config:cache
php artisan route:cache
php artisan view:cache
#compile opcache
SCRIPT_NAME=/opcache-api/compile \
REQUEST_URI=/opcache-api/compile \
SCRIPT_FILENAME=/var/www/html/public/index.php \
REQUEST_METHOD=GET \
REMOTE_ADDR=127.0.0.1 \
QUERY_STRING=force=true \
cgi-fcgi -bind -connect 127.0.0.1:9000
#here i bring the process to foreground
fg 1
так есть ли лучший способ добиться этого?и сделать процесс PID 1, чтобы докер мог правильно отправлять ему сигналы?