Docker phpmyadmin 忽略我的 php.ini 配置

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 中显示的内容。

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


Dje*_*arm 1

根据我的经验,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 镜像自述文件