我用apache,php7.0,mysql建立了一个docker-compose环境,并且还添加了phpmyadmin。
我尝试了很多次来包含我自己的php.ini文件,最后,我得到php接受它,因为它在我的index.php中加载了phpinfo()。
我需要加载一个重量超过750Mb的数据库,而我的phpmyadmin不允许我导入大于512Mb的数据库。
我试图将数据库压缩到60Mb,但是当我尝试导入它时,它需要很长时间并最终削减导入,因为它花了这么长时间,让我的数据库不完整。
即使设置我的php.ini file_size限制以及所有这些,phpmyadmin也会忽略它。
这是我在php.ini中所做的改变:
upload_max_filesize = 1024M
post_max_size = 1024M
memory_limit = 1024M
max_execution_time = 300
我的docker-compose.yml是:
version: '3.3'
services:
php:
build: apache-php
ports:
- "80:80"
- "443:443"
volumes:
- ./apache-php/www:/var/www/html
links:
- mysql
- phpmyadmin
mysql:
image: mysql:5.7
volumes:
- ./mysql:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=1347891743
- MYSQL_DATABASE=database
phpmyadmin:
image: phpmyadmin/phpmyadmin
links:
- mysql
environment:
PMA_HOST: mysql
PMA_PORT: 3306
ports:
- "8080:80"
volumes:
- ./mysql:/var/lib/mysql
我还有一个Dockerfile来运行我的php:
FROM php:7.0-apache
RUN docker-php-ext-install mysqli
COPY config/php.ini /usr/local/etc/php/
这是它在phpmyadmin中显示的内容。
非常感谢一点帮助
答案 0 :(得分:1)
您可以尝试:
在php.ini
的phpmyadmin容器中配置/usr/local/etc/php/
这是.yml
phpmyadmin:
volumes:
- ./php-make/upload.ini:/usr/local/etc/php/php.ini
和文件upload.ini
upload_max_filesize = 1280M
post_max_size = 1280M
根据需要更改任意点
我能做并成功
答案 1 :(得分:0)
根据我的经验,PhpMyAdmin不是导入大型数据库的最佳方式。 因此,即使您设法增加memory_limit,您仍然会遇到很长的处理时间。
最好提供init脚本并通过docker-compose将其链接到 /docker-entrypoint-initdb.d 文件夹。例如:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<img id="face" src="https://take-a-screenshot.org/secondary/img/about/face.jpg" style="display:none; position: absolute">
<img src="https://take-a-screenshot.org/secondary/img/about/blur.jpg">
从here您可能会看到它扫描 /docker-entrypoint-initdb.d 文件夹中的可变文件(包括* .sql)并对其进行处理。所以只需将您的SQL转储文件放在链接的卷中即可完成。
如果您仍需要增加php memory_limit,那么可能您可以使用/etc/phpmyadmin/config.user.inc.php设置PMA特定设置。 PMA docs和PMA docker image readme中的详细信息。
答案 2 :(得分:0)
尝试一下: 访问您的phpmyadmin docker容器: docker exec -it [容器名称或为bash]
在/ usr / local / etc / php中创建一个php.ini:
nano /usr/local/etc/php/php.ini
(nano或vi,取决于您喜欢的编辑器)
添加所需的行,例如:
file_uploads = On
memory_limit = 6G
upload_max_filesize = 6G
post_max_size = 6G
max_execution_time = 6000
然后重新加载:服务apache2重新加载
对我有用!
答案 3 :(得分:0)
您可以在 docker 容器中配置文件“phpmyadmin-misc.ini”
docker inspect phpmyadmin
"MergedDir": "/var/lib/docker/overlay2/e703e63ddf58c0decebd292eabaf8fe2c7eef49eafa390d7f7cc971f523fb0a8/merged",
编辑文件
添加 2 行
upload_max_filesize = 1024M
post_max_size = 1024M
docker restart phpmyadmin
答案 4 :(得分:0)
最简单的方法是使用环境变量。
在 phpmyadmin 容器内,如果您检查 php conf 文件,您可以看到文件 /usr/local/etc/php/conf.d/phpmyadmin-misc.ini
有这个内容:
allow_url_fopen=Off
max_execution_time=${MAX_EXECUTION_TIME}
max_input_vars=10000
memory_limit=${MEMORY_LIMIT}
post_max_size=${UPLOAD_LIMIT}
upload_max_filesize=${UPLOAD_LIMIT}
因此您可以简单地使用环境覆盖该值
你的docker-composer.yml
成为
version: '3.3'
services:
php:
build: apache-php
ports:
- "80:80"
- "443:443"
volumes:
- ./apache-php/www:/var/www/html
links:
- mysql
- phpmyadmin
mysql:
image: mysql:5.7
volumes:
- ./mysql:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=1347891743
- MYSQL_DATABASE=database
phpmyadmin:
image: phpmyadmin/phpmyadmin
links:
- mysql
environment:
- PMA_HOST=mysql
- PMA_PORT=3306
- UPLOAD_LIMIT=1024M
- MEMORY_LIMIT=1024M
- MAX_EXECUTION_TIME=300
ports:
- "8080:80"
volumes:
- ./mysql:/var/lib/mysql
与运行 docker 命令相同:
docker run -e VARIABLE=VALUE ...