前提・実現したいこと
Dockerでいろはボードというサイトを立ち上げようとしています。
いろはボードはeラーニングシステムで画像などのファイルをアップロードすることができます。
ただDockerのコンテナ内にアップロードされるためボリュームをホストと共有したいと思っています。
コンテナを起動したコマンド
docker run -v testvolume:/var/www/html/webroot/uploads -d -p 8001:80 -e MARIADB_ROOT_PASS=XXX-e IROHABOARD_DB_PASS=XXX --link mariadb:mariadb --name irohaboard bbrfkr0129/irohaboard
発生している問題・エラーメッセージ
ホストとのボリュームは共有できているのですが、
いろはボードでファイルのアップロードに失敗します。
以下はいろはボードのエラーログです。
/var/www/html/tmp/logs/error.log
2018-11-21 16:20:39 Warning: Warning (2): move_uploaded_file() [<a href='http://php.net/function.move-uploaded-file'>function.move-uploaded-file</a>]: Unable to move '/tmp/php3ojFdJ' to '/var/www/html/webroot//uploads/20181121162039.jpg' in [/var/www/html/Vendor/FileUpload.php, line 52] Trace: move_uploaded_file - [internal], line ?? FileUpload::saveFile() - APP/Vendor/FileUpload.php, line 52 ContentsController::admin_upload() - APP/Controller/ContentsController.php, line 299 ReflectionMethod::invokeArgs() - [internal], line ?? Controller::invokeAction() - CORE/Cake/Controller/Controller.php, line 490 Dispatcher::_invoke() - CORE/Cake/Routing/Dispatcher.php, line 193 Dispatcher::dispatch() - CORE/Cake/Routing/Dispatcher.php, line 167 [main] - APP/webroot/index.php, line 168
エラーの原因としてはアップロード先のURLが誤っているためと認識しています。
【誤】/var/www/html/webroot//uploads/20181121162039.jpg
【正】/var/www/html/webroot/uploads/20181121162039.jpg
ホストとボリュームを共有しない(-vオプションを付けない)場合は上記問題は発生しません。
試したこと
- docker run -v testvolume:/var/www/html/webrootと/uploadsを省いた状態でコンテナを起動すると問題なくアップロードできる
- docker run -v /data:/var/www/html/webroot/uploadsのようにホストのパス指定の形に変更しても状況は変わらない
- /var/www/html/webroot/uploadsにtouchコマンドでファイルを追加してホストと共有されることは確認できた
あなたの回答
tips
プレビュー