我正在为我的laravel应用程序使用docker swarm。
我有一个名为app
的服务,扩展了official php image,其中包含我的主要应用程序源代码以及php-fpm,可以在需要时进行缩放。
我想在每次创建容器时都运行一组shell命令,并且某些命令(例如:将预缓存操作缓存到内存中)必须在php-fpm进程启动后执行。
实际上,我已经设法做出了可以解决的问题,但对我来说却很幼稚,并且php-fpm PID不是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,以便docker可以正确向其发送信号?