Laravel 5.7アプリケーションをDockerで実行したい。コンテナは正常に起動するが、ブラウザでアプリを実行しようとするとエラーが発生する。
"/ Users/user/projects/laravel/application/storage/logs"に既存のディレクトリはなく、ビルドできません:権限が拒否されました
私はプロジェクト全体の権限を変更しました...
Sudo chmod -R 777 /Users/user/projects/laravel/application
しかし、何も変わっていません。この問題は他にどのように解決できますか?
これがdocker-compose.xmlファイルです
version: '3'
services:
web:
image: nginx
volumes:
- "./vhosts.conf:/etc/nginx/conf.d/vhosts.conf"
- "./application/public:/var/www/html/application/public"
- "./:/var/www/html"
- "./logs/nginx/error.log:/var/log/nginx/error.log"
- "./logs/nginx/access.log:/var/log/nginx/access.log"
ports:
- "8000:80"
environment:
- NGINX_Host=ld2.web
restart: always
depends_on:
- php
php:
image: php:7.2-fpm
restart: always
volumes:
- "./application/storage/php/php.ini:/usr/local/etc/php/conf.d/php.ini"
- "./application/public:/var/www/html/application/public"
- "./:/var/www/html"
これがls -ls applicationの出力です
drwxrwxrwx 26 user staff 832 Oct 24 14:50 .
drwxrwxrwx 8 user staff 256 Oct 24 01:06 ..
-rwxrwxrwx 1 user staff 213 Sep 4 16:12 .editorconfig
-rwxrwxrwx 1 user staff 704 Oct 24 00:38 .env
-rwxrwxrwx 1 user staff 655 Sep 4 16:12 .env.example
-rwxrwxrwx 1 user staff 111 Sep 4 16:12 .gitattributes
-rwxrwxrwx 1 user staff 177 Sep 4 16:12 .gitignore
drwxrwxrwx 7 user staff 224 Sep 4 16:12 app
-rw-r--r-- 1 user staff 0 Oct 24 14:56 application.txt
-rwxrwxrwx 1 user staff 1686 Sep 4 16:12 artisan
drwxrwxrwx 4 user staff 128 Sep 4 16:12 bootstrap
-rwxrwxrwx 1 user staff 1527 Sep 4 16:12 composer.json
-rwxrwxrwx 1 user staff 148959 Oct 24 00:35 composer.lock
drwxrwxrwx 15 user staff 480 Sep 4 16:12 config
drwxrwxrwx 6 user staff 192 Sep 4 16:12 database
-rwxrwxrwx 1 user staff 1022 Sep 4 16:12 package.json
-rwxrwxrwx 1 user staff 1134 Sep 4 16:12 phpunit.xml
drwxrwxrwx 10 user staff 320 Sep 4 16:12 public
-rwxrwxrwx 1 user staff 3924 Sep 4 16:12 readme.md
drwxrwxrwx 6 user staff 192 Sep 4 16:12 resources
drwxrwxrwx 6 user staff 192 Sep 4 16:12 routes
-rwxrwxrwx 1 user staff 563 Sep 4 16:12 server.php
drwxrwxrwx 6 user staff 192 Oct 24 01:20 storage
drwxrwxrwx 6 user staff 192 Sep 4 16:12 tests
drwxrwxrwx 40 user staff 1280 Oct 24 00:41 vendor
-rwxrwxrwx 1 user staff 537 Sep 4 16:12 webpack.mix.js
ls -la application/storage
drwxrwxrwx 6 user staff 192 Oct 24 01:20 .
drwxrwxrwx 27 user staff 864 Oct 24 15:44 ..
drwxrwxrwx 4 user staff 128 Sep 4 16:12 app
drwxrwxrwx 7 user staff 224 Sep 4 16:12 framework
drwxrwxrwx 2 user staff 64 Oct 24 01:20 logs
drwxrwxrwx 3 user staff 96 Oct 24 00:43 php
構成内のAPP_LOG_FILEがホストマシンのログファイルパスを参照しているようです(つまり、/Users/user/projects/laravel/application/storage/logs
)と絶対パスとして設定しますが、コンテナー内ではパスが異なり、実際には/var/www/html/application/storage/logs
。 .envで変更して再試行できますか?
実行する必要がありますphp artisan config:cache
コマンドは、OSフォルダーではなくコンテナーフォルダーにあります。
phpコンテナに入力:docker exec -it your-php-container /bin/bash
laravel project folderに移動し、キャッシュを設定します:php artisan config:cache
このコマンドを試してください、
php artisan optimize:clear
Php artisanがエラーを返す場合は、実行します。
composer update