Dockerを使ってPHPアプリケーション(特にWordPressなど)を開発していると、大きなファイルをアップロードしようとした際にエラーが発生することがあります。これは、PHPのデフォルト設定であるpost_max_sizeやupload_max_filesizeの値が低いためです。
この記事では、Docker環境でこのファイルアップロード上限を簡単に引き上げるための、代表的な2つの方法と具体的な使用例を解説します。
方法1: Dockerfileで設定をイメージに組み込む
この方法は、これから作成するDockerfileに設定を書き込むやり方です。
一度イメージをビルドしてしまえば、そのイメージから起動するコンテナは全て同じ設定が適用されるため、配布や再利用に便利です。
カスタム設定ファイルの作成
まず、Dockerfileと同じ階層に、適用したい設定を記述した.iniファイル(例: my_php.ini)を作成します。
; ファイルアップロード上限を320MBに設定
post_max_size = 320M
upload_max_filesize = 320Mポイントpost_max_sizeはPOSTリクエスト全体の上限、upload_max_filesizeはアップロードされるファイル1つあたりの上限です。
一般的にpost_max_size >= upload_max_filesizeとなるようにセットで設定します。
Dockerfileの編集
# ベースとなるPHPイメージ
FROM php:8.2-fpm
# (中略)
# 作成した設定ファイルを、PHPが追加設定を読み込むディレクトリにコピー
COPY my_php.ini /usr/local/etc/php/conf.d/イメージのビルド
ターミナルで以下のコマンドを実行し、設定が組み込まれた新しいイメージをビルドします。
docker build -t my-custom-php .これで、my-custom-phpイメージからコンテナを起動すれば、常時設定が反映された状態になります。
方法2: Docker Composeで手軽に設定を変更する
開発環境などで、コンテナを再ビルドせずに素早く設定を試したい・変更したい場合に非常に便利な方法です。ホストマシン上の設定ファイルを、直接コンテナにマウント(同期)させます。
カスタム設定ファイルの作成
方法1と同様に、設定ファイル(例: uploads.ini)を作成し、docker-compose.ymlと同じ階層に置きます。
post_max_size = 320M
upload_max_filesize = 320Mdocker-compose.ymlの編集
docker-compose.ymlファイルで、対象のPHPサービス(コンテナ)のvolumesセクションに、作成したファイルをマウントする記述を1行追加します。
services:
php: # ←サービス名は環境に合わせてください
image: php:8.2-fpm
volumes:
- ./src:/var/www/html # ←既存のボリューム設定
# 👇 この行を追加して設定ファイルをマウント
- ./uploads.ini:/usr/local/etc/php/conf.d/uploads.iniコンテナの再起動
以下のコマンドでコンテナを再起動すると、設定が反映されます。
この方法の最大のメリットは、今後uploads.iniの値を変更しても、コンテナを再起動するだけですぐに設定が反映される点です。
docker-compose up -d【応用】WordPressコンテナで設定を変更する具体例
wordpress:latestのような公式イメージを使用している場合も、方法2(Docker Compose)を使うのが最も簡単です。以下のようなdocker-compose.ymlがあるとします。
変更前のdocker-compose.yml
services:
wordpress:
image: wordpress:latest
ports:
- 8000:80
volumes:
- wp_data:/var/www/html
# ...このwordpressサービスのファイルアップロード上限を上げるには、volumesに設定ファイルのマウントを追加するだけです。
変更後のdocker-compose.yml
services:
wordpress:
image: wordpress:latest
ports:
- 8000:80
volumes:
- wp_data:/var/www/html
# 👇 この行を追加
- ./uploads.ini:/usr/local/etc/php/conf.d/uploads.ini
# ...uploads.iniファイル(内容は前述の通り)を用意して以下のコマンドを実行すれば、WordPressの管理画面からアップロードできるファイルサイズの上限が変更されているはずです。
まとめ
Docker環境でPHPの設定を変更するには、主に2つのアプローチがあります。
- Dockerfileで対応: 設定を普遍的なものとし、イメージ自体に組み込みたい場合に最適です。
- Docker Composeのvolumeで対応: 開発中に素早く設定を変更したい、またはコンテナの再ビルドを避けたい場合に最適です。
プロジェクトの要件や状況に合わせて、最適な方法を選択してください。


