Luk*_*rks 8 php phpmyadmin docker docker-compose
我用 apache、php7.0、mysql 建立了一个 docker-compose 环境,还添加了 phpmyadmin。
我尝试了很多次来包含我自己的 php.ini 文件,最后,我让 php 接受它,因为它显示在我加载了 phpinfo() 的 index.php 中。
我需要加载一个超过 750Mb 的数据库,而我的 phpmyadmin 不允许我导入大于 512Mb 的数据库。
我试图将 db 压缩到 60Mb,但是当我尝试导入它时,它花费了很长时间并且最终因为它花费了很长时间而切断了导入,使我的 db 不完整。
即使设置了我的 php.ini file_size 限制等等,phpmyadmin 也会忽略它。
这是我在 php.ini 中所做的更改:
upload_max_filesize = 1024M
post_max_size = 1024M
memory_limit = 1024M
max_execution_time = 300
Run Code Online (Sandbox Code Playgroud)
我的 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
Run Code Online (Sandbox Code Playgroud)
我还有一个 Dockerfile 来运行我的 php:
FROM php:7.0-apache
RUN docker-php-ext-install mysqli
COPY config/php.ini /usr/local/etc/php/
Run Code Online (Sandbox Code Playgroud)
这是它在 phpmyadmin 中显示的内容。
一点帮助将不胜感激
Zau*_*ker 18
最简单的方法是使用环境变量。
在 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}
Run Code Online (Sandbox Code Playgroud)
所以你可以简单地使用环境来覆盖该值
你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
Run Code Online (Sandbox Code Playgroud)
与运行 docker 命令相同:
docker run -e VARIABLE=VALUE ...
Run Code Online (Sandbox Code Playgroud)
小智 15
你可以试试:
php.ini在 phpmyadmin 容器中的配置/usr/local/etc/php/
这是在 .yml 中
phpmyadmin:
volumes:
- ./php-make/upload.ini:/usr/local/etc/php/php.ini
Run Code Online (Sandbox Code Playgroud)
和文件upload.ini
upload_max_filesize = 1280M
post_max_size = 1280M
Run Code Online (Sandbox Code Playgroud)
如果您愿意,可以更改任何点
我能做到并成功 
根据我的经验,PhpMyAdmin 不是导入大型数据库的最佳方法。因此,即使您设法增加内存限制,您仍然会遇到很长的处理时间。
最好提供 init 脚本并通过 docker-compose将其链接到/docker-entrypoint-initdb.d文件夹。例如:
mysql:
image: mysql:5.7
volumes:
- ./my_directory_with_init_scripts:/docker-entrypoint-initdb.d
- ./mysql:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=1347891743
- MYSQL_DATABASE=database
Run Code Online (Sandbox Code Playgroud)
从这里您可能会看到它扫描/docker-entrypoint-initdb.d文件夹以查找可用文件(包括 *.sql)并处理它们。因此,只需将 SQL 转储文件放入链接卷中即可完成。
如果您仍然需要增加 php memory_limit,那么您可能可以使用 /etc/phpmyadmin/config.user.inc.php 设置 PMA 特定设置。更多信息请参阅PMA 文档和PMA docker 镜像自述文件。
| 归档时间: |
|
| 查看次数: |
9350 次 |
| 最近记录: |