具有自定义 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 容器中使用