我有一个针对 apache 和 php7-fpm 的自定义 docker 镜像,但每当我更改 php ini 文件并在镜像构建期间使用 Supervisord 在更改后重新启动 php7-fpm 时,在从镜像运行容器之前,我注意到我无法重新启动 php7-fpm。所以我对 php ini 文件所做的更改永远不会得到反映
但是当我登录到正在运行的容器并尝试重新启动 php7-fpm 时,我看到了这些变化
这是我的主管配置
[supervisord]
nodaemon=true
[program:php-fpm7.0]
command = /usr/sbin/php-fpm7.0 -c /etc/php/7.0/fpm/php-fpm.conf
autorestart=true
[program:apache2]
command=/bin/bash -c "source /etc/apache2/envvars && exec /usr/sbin/apache2 -DFOREGROUND"
autorestart=true
这是我的 start.sh 脚本
#!/bin/bash
set -e
echo "ServerName localhost" >> /etc/apache2/apache2.conf
#echo "export HOSTNAME=$(hostname)" >> /etc/apache2/envvars
sed -i -e "s/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/g" /etc/php/7.0/fpm/php.ini
sed -i -e "s/;short_open_tag = Off/short_open_tag = On/g" /etc/php/7.0/fpm/php.ini
sed -i -e "s/;display_errors = Off/display_errors = On/g" /etc/php/7.0/fpm/php.ini
sed -ri 's/^upload_max_filesize\s*=\s*.+/upload_max_filesize = 450M/g' /etc/php/7.0/fpm/php.ini
sed -ri 's/^max_input_time\s*=\s*.+/max_input_time = 300/g' /etc/php/7.0/fpm/php.ini
sed -ri 's/^memory_limit\s*=\s*.+/memory_limit = 640M/g' /etc/php/7.0/fpm/php.ini
sed -ri 's/^post_max_size\s*=\s*.+/post_max_size = 450M/g' /etc/php/7.0/fpm/php.ini
sed -ri 's/^max_execution_time\s*=\s*.+/max_execution_time = 300/g' /etc/php/7.0/fpm/php.ini
sed -i -e "s/;daemonize\s*=\s*yes/daemonize = no/g" /etc/php/7.0/fpm/php-fpm.conf
sed -i -e "s/;catch_workers_output\s*=\s*yes/catch_workers_output = yes/g" /etc/php/7.0/fpm/pool.d/www.conf
sed -i -e "s/pm.max_children = 5/pm.max_children = 9/g" /etc/php/7.0/fpm/pool.d/www.conf
sed -i -e "s/pm.start_servers = 2/pm.start_servers = 3/g" /etc/php/7.0/fpm/pool.d/www.conf
sed -i -e "s/pm.min_spare_servers = 1/pm.min_spare_servers = 2/g" /etc/php/7.0/fpm/pool.d/www.conf
sed -i -e "s/pm.max_spare_servers = 3/pm.max_spare_servers = 4/g" /etc/php/7.0/fpm/pool.d/www.conf
sed -i -e "s/pm.max_requests = 500/pm.max_requests = 200/g" /etc/php/7.0/fpm/pool.d/www.conf
sed -i -e "s/;clear_env = no/clear_env = no/g" /etc/php/7.0/fpm/pool.d/www.conf
请帮忙如何重新开始start.sh
php7-fpm在创建 docker 镜像时使用脚本更改 php ini 文件时
附言
您可能想知道为什么我只需要启动 php7-fpm,那么为什么我需要重新启动它呢?其实没有办法让 php7-fpm 与 docker 一起工作,除非我首先在我的 docker 文件中启动它,如下所示。每当我从我的 dockerfile 中删除该行时,它都不起作用。如果有人在 docker 中安装了 apache 2.4 和 php7-fpm,并且无需这种方式,请将他们的图像链接发送给我!
RUN service php7.0-fpm start
谢谢
答案1
只需将这一行添加到start.sh
脚本中
service php7.0-fpm restart
就这样,所有问题都解决了!
没想到它就像在 start.sh 脚本中添加一个 bash 命令一样简单