具有自定义 php.ini 文件设置的 Docker Wordpress 容器

Posted

技术标签:

【中文标题】具有自定义 php.ini 文件设置的 Docker Wordpress 容器【英文标题】:Docker Wordpress container with custom php.ini file settings 【发布时间】:2020-03-07 20:27:50 【问题描述】:

我在 Docker 容器中运行 Wordpress(以及 phpMyAdmin 和 mysql),我需要进行更改以增加 PHPMyAdmin 的最大可上传文件大小

我研究了许多解决方案并找到了创建自定义uploads.ini 文件然后将此文件包含在docker-compose 文件中的建议。

所以我有这个:

uploads.ini

file_uploads = On
memory_limit = 64M
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 600

docker-compose.yml

version: '3'

services:
  # Database
  db:
    image: mysql:5.7
    volumes:
      - db_data:/var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: password
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: wordpress
    networks:
      - wpsite
  # phpmyadmin
  phpmyadmin:
    depends_on:
      - db
    image: phpmyadmin/phpmyadmin
    restart: always
    ports:
      - '8080:80'
    environment:
      PMA_HOST: db
      MYSQL_ROOT_PASSWORD: password 
    networks:
      - wpsite
  # Wordpress
  wordpress:
    depends_on:
      - db
    image: wordpress:latest
    ports:
      - '8000:80'
    restart: always
    volumes:
      - './:/var/www/html'
      - ./uploads.ini:/usr/local/etc/php/conf.d/uploads.ini
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: wordpress
    networks:
      - wpsite
networks:
  wpsite:
volumes:
  db_data:

我已将uploads.ini 文件包含在volumes 中,用于wordpress

volumes:
      - './:/var/www/html'
      - ./uploads.ini:/usr/local/etc/php/conf.d/uploads.ini

但遗憾的是,在运行 docker-compose 并打开 localhost:8080 以转到 PHPMyAdmin 后,我的最大文件上传大小仍然只有 2m,而不是自定义文件中的 64m

【问题讨论】:

你检查文件/usr/local/etc/php/conf.d/uploads.ini是否存在 github.com/docker-library/wordpress/issues/… 可能的解决方案:***.com/questions/42983276/… 【参考方案1】:

根据this answer需要设置绝对路径挂载单个文件。所以在要挂载的文件之前添加$PWD

你的音量部分会是这样的:

volumes:
  - $PWD/uploads.ini:/usr/local/etc/php/conf.d/uploads.ini

【讨论】:

【参考方案2】:

您想增加 PHPMyAdmin 的最大可上传文件大小,但您为 wordpress 容器添加了 uploads.ini)

为 phpmyadmin 容器添加卷,你会很高兴=)

# phpmyadmin
phpmyadmin:
depends_on:
  - db
image: phpmyadmin/phpmyadmin
volumes:
 - ./uploads.ini:/usr/local/etc/php/conf.d/uploads.ini
restart: always
ports:
  - '8080:80'
environment:
  PMA_HOST: db
  MYSQL_ROOT_PASSWORD: password 
networks:
  - wpsite

【讨论】:

【参考方案3】:

您可以使用 ENV 变量将上传限制传递给 phpmyadmin docker 容器

例子

phpmyadmin:
image: phpmyadmin/phpmyadmin
container_name: phpmyadmin
depends_on:
  - mysql
environment:
  - UPLOAD_LIMIT=512M
  - PMA_HOST=mysql
  - PMA_PORT=3306
  - PMA_ARBITRARY=1
ports:
  - "8888:80"

【讨论】:

这是对我有用的方法。之后您只需停止并启动 docker 容器。请注意,我的 docker-compose.yml 文件中的语法略有不同:` phpmyadmin: image: phpmyadmin/phpmyadmin depends_on: - mysql environment: UPLOAD_LIMIT: 512M PMA_HOST: mysql PMA_PORT: 3306 PMA_ARBITRARY: 1 `【参考方案4】:

您可以尝试重建您的图像,但就像这样。 将此添加到您的 Dockerfile 中的某个位置。 这样你就可以确定它不是某种许可问题(我认为是)

  COPY ./uploads.ini /usr/local/etc/php/conf.d

【讨论】:

【参考方案5】:

你可以使用这个插件来增加上传的最大尺寸

https://wordpress.org/plugins/upload-max-file-size/

【讨论】:

以上是关于具有自定义 php.ini 文件设置的 Docker Wordpress 容器的主要内容,如果未能解决你的问题,请参考以下文章

如何设置 php 配置文件 (php.ini) 在 laradock 的 phpmyadmin 容器中使用

为单个站点使用自定义 PHP.INI。 Windows 2003、64 位、IIS7.5、PHP 5.3.6

无法更新 Docker 容器中的 php.ini 文件

PHP之文件引用与自定义函数

自定义session过期时间

[PHP警告:mail():“sendmail_from”未在php.ini中设置或自定义“From:”标头丢失