こんにちは、エンジニアのやまじです。
Web開発に携わっていると、Docker環境とphpMyAdminをセットで使うことがあります。
そんな時、本番環境のサーバーからエクスポートしたSQLファイルをインポートしようとしたら次のようなエラーメッセージに遭遇した経験はありませんか?
【アップロードファイルサイズの上限(最大: 2,048KiB)を超えています】
phpMyAdminはデフォルトのアップロード上限が2048KiB(約2.1MB)と非常に小さいため、規模の大きいサイトのデータを扱おうとすると、この制限に引っかかってアップロードに失敗してしまいます。

今回はこの煩わしいデータベースの容量制限を簡単に変更する方法をご紹介します。
方法1:docker-compose.yml を変更する(オススメ)
Docker版のphpMyAdminでは、UPLOAD_LIMIT 環境変数でアップロード上限サイズを簡単に変更できます。
docker-compose.yml
を使って管理している場合、phpmyadmin
サービスの environment
に UPLOAD_LIMIT
を追加するだけです。
docker-compose.yml の変更方法
例えば、アップロード上限を 64MB に引き上げたい場合、phpmyadmin サービスの environment に以下の2行を追加します。
version: '3.8'
phpmyadmin:
depends_on:
- mysql
image: phpmyadmin/phpmyadmin:${PHPMYADMIN_VERSION:-latest}
container_name: ${COMPOSE_PROJECT_NAME}_phpmyadmin
restart: always
ports:
- ${PHPMYADMIN_PORT}:80
environment:
PMA_HOST: mysql
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-password}
MEMORY_LIMIT: 128M ←追加
UPLOAD_LIMIT: 64M ←追加
UPLOAD_LIMIT: 64M
→ phpMyAdminにアップロードできるファイルの最大サイズを64MBに設定します。
MEMORY_LIMIT: 128M
→ アップロードしたファイルを処理する際にPHPが使用できるメモリ(RAM)の上限を128MBに設定します。一般的に、この値はUPLOAD_LIMIT
よりも大きく設定する必要があります。
上記の2行をdocker-compose.yml
に追加後、ターミナルから以下コマンドを実行してコンテナを再起動して設定を反映します。
docker-compose up -d
設定反映
Docker環境のphpMyAdminにアクセスし、インポート画面を確認してみてください。以下画面のように上限サイズが変更されているはずです。

これでもう容量制限を気にする必要はなくなりました!
方法2:起動中のコンテナを一時的に編集する
この方法の最大のメリットは、docker-compose.ymlなどを編集せず、ターミナル操作だけで稼働中のコンテナの設定変更を試せる手軽さにあります。
※この方法での変更は、コンテナを再作成するとリセットされます。あくまで、すぐに試したい場合の一時的な対応としてお使いください。
ステップ1:コンテナ名を確認
docker ps
まず、上記コマンドで現在起動中のコンテナのリストを表示し、対象となるphpMyAdminのコンテナ名(例: wp-hajime-test)を確認します。

ステップ2:コンテナ内でコマンドを実行する
docker exec -it wp-hajime-test /bin/sh
確認したコンテナ名を使ってコンテナ内に入り、操作用のシェルを起動します。
ステップ3:設定ファイル作成
echo "upload_max_filesize = 128M\npost_max_size = 128M" > /usr/local/etc/php/conf.d/uploads.ini
コンテナ内で以下のコマンドを実行し、PHPのアップロード上限を128MBに引き上げるための設定ファイル(uploads.ini
)を所定の場所に作成します。
ステップ4:再起動
apache2ctl restart
作成した設定ファイルを読み込ませるため、コンテナ内でApacheを再起動します。
ステップ5:操作を終了する
exit
最後に、exitコマンドでコンテナ内のシェルを終了し、元のターミナルに戻ります。
まとめ
今回は、Docker版phpMyAdminのアップロード上限サイズを変更する2つの方法をご紹介しました。
【方法1】docker-compose.yml
を変更
プロジェクトとして設定を恒久的に変更しておきたい人向け。
【方法2 】コンテナを直接編集
一時的でいいからすぐに設定を変更して試したい、動作テストがしたい人向け。
今回の方法を使えば、どんなに容量の大きいSQLデータも問題なくインポートができるようになり、
SQLデータのインポートエラーに悩まされることもなくなるはずです。
この記事が、どなたかの一助となれば幸いです!