Laravel& amp; 500(内部服务器错误)搬运工人

时间:2017-07-20 05:53:13

标签: php laravel docker docker-compose

我在Docker中创建Laravel PHP应用程序。首先,我使用

设置Laravel应用程序
laravel new laravelDockerApp

它创建成功。我通过内置服务器验证它的设置

php artisan serve

然后使用Docker设置本地环境

docker-compose.yml

version: '2'

services:
  web:
    build:
      context: ./
      dockerfile: web.docker
    volumes:
      - ./:/var/www
    ports:
      - "8080:80"
    links:
      - app
  app:
    build:
      context: ./
      dockerfile: app.docker
    volumes:
      - ./:/var/www

app.docker

FROM php:7-fpm

RUN apt-get update && apt-get install -y libmcrypt-dev mysql-client \
    && docker-php-ext-install mcrypt pdo_mysql

WORKDIR /var/www

web.docker

FROM nginx:1.10

ADD ./vhost.conf /etc/nginx/conf.d/default.conf
WORKDIR /var/www

vhost.conf

server {
    listen 80;
    index index.php index.html;
    root /var/www/public;

    location / {
        try_files $uri /index.php?$args;
    }

    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass app:9000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
    }
}

我运行docker-compose up -d命令。应用程序web容器成功启动。当我使用

在浏览器中检查应用程序时
  

本地主机:8080

我得到了

  

500(内部服务器错误)

拜托,你能帮忙解决这个问题吗?感谢。

2 个答案:

答案 0 :(得分:7)

我找到了解决方案。我使用

在Laravel应用程序上设置了权限
sudo chmod -R 777 storage && sudo chmod -R 777 bootstrap/cache

答案 1 :(得分:0)

此解决方案可能不适用于您,因为您使用的是 Nginx,但就我而言,我使用 php:7.0-apache 作为源图像,因此我将 Apache 用户设为我的应用文件的所有者。

在我的 Dockerfile 中,我有:

...

USER www-data

WORKDIR /var/www/html

COPY --chown=www-data:www-data . .

...

这解决了问题,因此值得一试,要么修改您的 Dockerfile,要么 Docker Compose 在挂载卷时有一些用户权限选项。