【发布时间】:2021-11-15 18:07:50
【问题描述】:
来自 php:8.0-apache-buster
#安装所有系统依赖并启用PHP模块
运行 apt-get update && apt-get install -y
libpq-开发
libzip-开发
&& rm -r /var/lib/apt/lists/*
&& docker-php-ext-install
pdo_pgsql
pgsql
拉链
#安装作曲家 运行 curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/bin/ --filename=composer
#将apache的uid和gid更改为docker用户uid/gid 运行 usermod -u 1000 www-data && groupmod -g 1000 www-data
#将 web_root 更改为 laravel /var/www/html/public 文件夹 运行 sed -i -e "s/html/html/public/g" /etc/apache2/sites-enabled/000-default.conf
启用 apache 模块重写
运行 a2enmod 重写
#复制源文件并运行composer 复制 。 /var/www/html
安装所有 PHP 依赖项
运行 cd /var/www/html
运行 composer install --no-interaction
运行作曲家更新
运行作曲家转储自动加载 #更改我们应用程序的所有权 运行 chown -R www-data:www-data /var/www/html/storage
运行 chown -R www-data:www-data /var/www/html
运行 chown -R www-data:www-data /var/www/html/bootstrap/cache
运行 chmod -R 755 /var/www/html/storage
运行 chmod -R 777 引导
运行 chmod -R 777 /var/www/html
入口点 ["/var/www/html/docker-entrypoint.sh"]
这些是我在 dockerfile 中添加的上述命令,以避免权限错误
但问题是当我在本地系统中运行这个 dockerfile 时,它适用于应用程序
但是当我在云运行上部署并在我的应用程序中输入错误的登录信息时,它给了我这个错误“”消息“:”流或文件“/var/www/html/storage/logs/laravel.log”不能以附加模式打开:无法打开流:权限被拒绝","
所以我相信dockerfile没有问题,可能是cloud run的配置有问题。我不知道
apache2.conf
<Directory />
Options FollowSymLinks
AllowOverride All
Require all denied
</Directory>
<Directory /usr/share>
AllowOverride All
Require all granted
</Directory>
<Directory /var/www/html>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
000-default.conf
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/public/
<Directory /var/www/html/>
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
【问题讨论】:
-
在变量和秘密下添加 APP_DEBUG=true 和 APP_KEY 应该可以工作
-
编辑您的问题并在 apache2.conf 中为 laravel/public 条目显示
条目。如果您没有,请添加一个。 Laravel 需要 AllowOverride All -
我已经更新了我的问题,请查看更改为 AllowOverride All 但仍然是同样的问题
-
您也没有 html/public 的
-
始终尝试阅读文档以了解此类详细信息。 apache2.conf
标签: laravel google-cloud-platform dockerfile devops google-cloud-run