Docker and laravel not clearing the cache
我有一个运行有docker和laravel的应用程序,但是显然有一些指令已执行但无法运行。
这些指令是
有时,我需要进入容器并运行这些说明,以使我的更改反映在浏览器中。除了kubernetes因未反映的更改而检测到的故障之外
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | FROM php:7.2.0-fpm as php RUN apt-get update && apt-get install -y openssl openssh-client \\ rsync sshpass zip unzip git vim libmcrypt-dev mysql-client \\ libssh2-1-dev libmagickwand-dev \ gnupg2 --no-install-recommends zlib1g-dev sass \\ && pecl install mcrypt-1.0.1 \\ && docker-php-ext-enable mcrypt \\ && pecl install imagick \\ && docker-php-ext-enable imagick \\ && docker-php-ext-install pdo_mysql \\ && docker-php-ext-install gd \\ && docker-php-ext-install zip \\ && pecl install ssh2-1.0 \\ && docker-php-ext-enable ssh2 RUN curl --silent --location https://deb.nodesource.com/setup_11.x | bash - RUN apt-get install -y nodejs RUN npm install --global bower WORKDIR /var/www/html COPY install-composer.sh install-composer.sh RUN bash ./install-composer.sh COPY composer.json ./ COPY composer.lock ./ RUN composer install --no-scripts --no-autoloader COPY . ./ RUN composer update RUN composer install COPY zz-docker.conf /usr/local/etc/php-fpm.d/zz-docker.conf RUN mkdir -p /var/run/php/sock/ RUN sass resources/sass/style.scss:public/assets/stylesheets/style.css RUN bower install --allow-root RUN composer dump-autoload RUN php artisan vendor:publish --provider="Sentry\\SentryLaravel\\SentryLaravelServiceProvider" ONBUILD chown -R www-data:www-data . RUN php artisan optimize && php artisan config:cache \\ && php artisan view:cache && php artisan view:clear |
大多数时候,我需要进入容器并运行php artisan Optimize,即使它们在Dockerfile中,也要再次清除view:cache和view:clear,所以不必重新做一次<铅>
在
1 2 3 4 5 6 7 8 9 | # entrypoint.sh #!/usr/bin/env sh ... php artisan optimize php artisan config:cache php artisan view:cache php artisan view:clear ... php artisan serve # or use exec"$@" and pass php artisan serve through CMD in Dockerfile |
这将使您启动的每个容器在开始为您的应用程序提供服务之前执行所有这些命令。
您可能要检查的其他链接:
- Dockerfile中的CMD和ENTRYPOINT有什么区别?
- set -e和exec a€$ @ a€是什么?为docker entrypoint脚本做什么?
您也可以使用cmd:
1 | sudo docker-compose exec php php /var/www/html/path_to_laravel_project_dir/artisan config:cache |
它将在容器中执行artisan cmd。
只是遇到了缓存问题:Laravel也很清楚(我的案例中不涉及Docker)
事实是:如果Artisan无权清除缓存,它只是默默地失败,自豪地告诉您缓存已被成功清除(叹气)。
有关更多详细信息,请参见https://github.com/laravel/framework/issues/1179
*在我的情况下,在命令执行之前添加了简单的" sudo"就可以了...但是我却花了半个小时才了解原因(关于Laravel / Artisan的介绍:p)
*我有一个Laravel v6.5