【发布时间】:2020-06-21 06:43:42
【问题描述】:
我正在尝试使用 git、Docker 和两个容器设置一个简单的 Grav 站点工作流:一个用于 nginx,一个用于 PHP。想法是将git clone 加入我的Digital Ocean droplet 并运行docker-compose up -d --build 来构建和服务网站。
每当我尝试访问这些网站时都会遇到权限问题,甚至 Grav 关于权限问题故障排除的文档也无济于事。
这是我的docker-compose.yml:
version: '3'
services:
web:
build:
context: .
dockerfile: ./docker/nginx/Dockerfile
ports:
- "80:80"
volumes:
- ./src:/var/www/html
links:
- php
php:
build:
context: .
dockerfile: ./docker/php/Dockerfile
volumes:
- ./src:/var/www/html
这里是 nginx 的 Dockerfile:
FROM nginx:stable-alpine
WORKDIR /var/www/html
COPY ./src .
COPY ./docker/nginx/default.conf /etc/nginx/conf.d/default.conf
如果有什么用,这里是我正在使用的 nginx 配置:
server {
listen 80;
index index.php index.html;
server_name www.gravtest.test gravtest.test;
error_log /var/log/nginx/gravtest.test.error.log;
access_log /var/log/nginx/gravtest.test.access.log;
root /var/www/html;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass php:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}
PHP Dockerfile 很简单,它只是生成 php:7.3-fpm 并安装一些依赖项,如 opcache、gd 等...
每当我尝试通过localhost 访问该网站时,我都会收到此错误:
致命错误: 未捕获的 RuntimeException:在 /var/www/html/vendor/rockettheme/ 中为 /var/www/html/cache/compiled/files/40779d000b68629af00dd987148afc06.yaml.php 创建目录失败toolbox/File/src/File.php:325 堆栈跟踪:....
文件从主机复制到具有nginx:nginx 所有者的容器,所以我应该很好,但看起来我不是。我尝试使用 Grav 的文档设置文件夹/文件 chmod,但没有骰子。
我错过了什么吗?
【问题讨论】:
标签: php docker nginx docker-compose grav