在php-fpm docker映像上更改为pm = static

时间:2019-06-27 18:38:37

标签: php wordpress docker docker-compose fastcgi

我正在尝试在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 pool名称空间:

[www]
pm = static
pm.max_children = 10

我得到了错误:

ALERT: [pool www] user has not been defined

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

实际上,当您将目录挂载到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文件之后加载(有关更多信息,请参见此问题:{{ 3}})。另外,您的docker-compose文件将是这样的
version: '3.6'
services:

  wordpress:
    ...
    volumes:
      - ./php/pool.d/www2.conf:/usr/local/etc/php-fpm.d/www2.conf
    ...