在 php-fpm docker 图像上更改为 pm = static
Change to pm = static on php-fpm docker image
我正在尝试在 PHP 的 fpm 配置中更改此值。
在这里,你可以看到我的简单docker-compose
文件:
version: '3.6'
services:
wordpress:
image: wordpress:${WORDPRESS_VERSION:-php7.3-fpm}
container_name: ${WORDPRESS_CONTAINER:-wordpress}
volumes:
- ./php/pool.d:/usr/local/etc/php-fpm.d
environment:
- WORDPRESS_DB_NAME=${WORDPRESS_DB_NAME:-wordpress}
- WORDPRESS_TABLE_PREFIX=${WORDPRESS_TABLE_PREFIX:-wp_}
- WORDPRESS_DB_HOST=${WORDPRESS_DB_HOST:-mysql}
- WORDPRESS_DB_USER=${WORDPRESS_DB_USER:-root}
- WORDPRESS_DB_PASSWORD=${WORDPRESS_DB_PASSWORD:-password}
depends_on:
- mysql
restart: always
...
里面./php/pool.d/my-www.conf
我只有:
pm = static
pm.max_children = 10
我得到错误:
ERROR: [/usr/local/etc/php-fpm.d/my-www.conf:2] unknown entry 'pm'
如果我包含 www
池命名空间:
[www]
pm = static
pm.max_children = 10
我得到错误:
ALERT: [pool www] user has not been defined
有什么想法吗?
实际上,当您将目录挂载到 docker-image 内部时(就像您所做的那样。/php/pool.d:/usr/local/etc/php-fpm.d)
version: '3.6'
services:
wordpress:
...
volumes:
- ./php/pool.d:/usr/local/etc/php-fpm.d
...
你替换了它。因此,你没有池的配置,除了它的一小部分是这样的
pm = static
pm.max_children = 10
因此,您得到了错误。为了解决这个麻烦我可以提出两种方法:
- 您可以将完整的池配置文件传递到 docker-image 内部,并在新配置文件中更改任何您想要的内容,然后从这个
更改 docker-compose 文件
version: '3.6'
services:
wordpress:
...
volumes:
- ./php/pool.d:/usr/local/etc/php-fpm.d
...
至此
version: '3.6'
services:
wordpress:
...
volumes:
- ./php/pool.d/www.conf:/usr/local/etc/php-fpm.d/www.conf
...
- 您可以通过将新配置值作为第二个配置文件传递到 docker-image 内部的池目录来覆盖池配置的一部分。但是,您必须关心文件名。例如,通常默认池配置文件的名称是 www.conf 因此,要覆盖其配置,您必须创建一个名称为 www2.conf 的文件以在 www.conf 文件之后加载(有关更多信息请参阅此问题:https://serverfault.com/a/806530/529531)。另外,您的 docker-compose 文件将是这样的
version: '3.6'
services:
wordpress:
...
volumes:
- ./php/pool.d/www2.conf:/usr/local/etc/php-fpm.d/www2.conf
...
我正在尝试在 PHP 的 fpm 配置中更改此值。
在这里,你可以看到我的简单docker-compose
文件:
version: '3.6'
services:
wordpress:
image: wordpress:${WORDPRESS_VERSION:-php7.3-fpm}
container_name: ${WORDPRESS_CONTAINER:-wordpress}
volumes:
- ./php/pool.d:/usr/local/etc/php-fpm.d
environment:
- WORDPRESS_DB_NAME=${WORDPRESS_DB_NAME:-wordpress}
- WORDPRESS_TABLE_PREFIX=${WORDPRESS_TABLE_PREFIX:-wp_}
- WORDPRESS_DB_HOST=${WORDPRESS_DB_HOST:-mysql}
- WORDPRESS_DB_USER=${WORDPRESS_DB_USER:-root}
- WORDPRESS_DB_PASSWORD=${WORDPRESS_DB_PASSWORD:-password}
depends_on:
- mysql
restart: always
...
里面./php/pool.d/my-www.conf
我只有:
pm = static
pm.max_children = 10
我得到错误:
ERROR: [/usr/local/etc/php-fpm.d/my-www.conf:2] unknown entry 'pm'
如果我包含 www
池命名空间:
[www]
pm = static
pm.max_children = 10
我得到错误:
ALERT: [pool www] user has not been defined
有什么想法吗?
实际上,当您将目录挂载到 docker-image 内部时(就像您所做的那样。/php/pool.d:/usr/local/etc/php-fpm.d)
version: '3.6'
services:
wordpress:
...
volumes:
- ./php/pool.d:/usr/local/etc/php-fpm.d
...
你替换了它。因此,你没有池的配置,除了它的一小部分是这样的
pm = static
pm.max_children = 10
因此,您得到了错误。为了解决这个麻烦我可以提出两种方法:
- 您可以将完整的池配置文件传递到 docker-image 内部,并在新配置文件中更改任何您想要的内容,然后从这个 更改 docker-compose 文件
version: '3.6'
services:
wordpress:
...
volumes:
- ./php/pool.d:/usr/local/etc/php-fpm.d
...
至此
version: '3.6'
services:
wordpress:
...
volumes:
- ./php/pool.d/www.conf:/usr/local/etc/php-fpm.d/www.conf
...
- 您可以通过将新配置值作为第二个配置文件传递到 docker-image 内部的池目录来覆盖池配置的一部分。但是,您必须关心文件名。例如,通常默认池配置文件的名称是 www.conf 因此,要覆盖其配置,您必须创建一个名称为 www2.conf 的文件以在 www.conf 文件之后加载(有关更多信息请参阅此问题:https://serverfault.com/a/806530/529531)。另外,您的 docker-compose 文件将是这样的
version: '3.6'
services:
wordpress:
...
volumes:
- ./php/pool.d/www2.conf:/usr/local/etc/php-fpm.d/www2.conf
...