首页 文章

Laradock(docker)不断抛出http错误500

提问于
浏览
2

无论我尝试什么,当我访问我的docker-machine ip时,我一直收到HTTP错误代码500 .

我通过Docker工具箱(操作系统:Windows 10)运行laradock并运行默认VM . 我按照视频中的说明设置了laradock .

我已成功将我需要的文件夹安装到VM中,并根据我在VM中的代码位置更改了docker-compose.yml:

这是我的docker-compose.yml文件:

版本:'2'服务:Nginx Server Container nginx:
build:./ nginx
volumes_from:

  • volumes_source
    卷:
  • ./logs/nginx/:/var/log/nginx
    端口:
  • “80:80”
  • “443:443”
    链接:
  • php-fpm
    PHP-FPM容器php-fpm:
    Build :
    上下文:./ php -fpm
    dockerfile:Dockerfile-70
    volumes_from:
  • volumes_source
    暴露:
  • “9000”
    链接:
  • 工作空间
    MySQL容器mysql:
    build:./ mysql
    volumes_from:
  • volumes_data
    端口:
  • “3306:3306”
    环境:
    MYSQL_DATABASE:宅基地
    MYSQL_USER:宅基地
    MYSQL_PASSWORD:秘密
    MYSQL_ROOT_PASSWORD:root
    PostgreSQL Container postgres:
    build:./ postgres
    volumes_from:
  • volumes_data
    端口:
  • “5432:5432”
    环境:
    POSTGRES_DB:宅基地
    POSTGRES_USER:宅基地
    POSTGRES_PASSWORD:秘密
    MariaDB Container mariadb:
    build:./ mariadb
    volumes_from:
  • volumes_data
    端口:
  • “3306:3306”
    环境:
    MYSQL_DATABASE:宅基地
    MYSQL_USER:宅基地
    MYSQL_PASSWORD:秘密
    MYSQL_ROOT_PASSWORD:root
    Neo4j Container neo4j:
    build:./ neo4j
    端口:
  • “7474:7474”
  • “1337:1337”
    环境:
  • NEO4J_AUTH =宅基地:秘密
    volumes_from:
  • volumes_data
    MongoDB容器mongo:
    build:./ mongo
    端口:
  • “27017:27017”
    volumes_from:
  • volumes_data
    Redis容器redis:
    build:./redis
    volumes_from:
  • volumes_data
    端口:
  • “6379:6379”
    Memcached Container memcached:
    build:./ memcached
    volumes_from:
  • volumes_data
    端口:
  • “11211:11211”
    链接:
  • php-fpm
    Beanstalkd Container beanstalkd:
    build:./ beanstalkd
    端口:
  • “11300:11300”
    特权:真实
    链接:
  • php-fpm
    Beanstalkd控制台容器beanstalkd-console:
    build:./ beanstalkd-console
    端口:
  • “2080:2080”
    链接:
  • beans 茎
    Workspace Utilities容器工作区:
    Build :
    context:./ workspace
    ARGS:
  • INSTALL_PRESTISSIMO = false
    volumes_from:
  • volumes_source
    tty:是的
    Laravel应用程序代码容器volumes_source:
    build:./ volmemes / application
    卷:
  • /c/Users/pomodoro.xyz/code:/var/www/laravel
    数据库数据容器volumes_data:
    build:./ volmemes / data
    卷:
  • / var / lib / mysql:/ var / lib / mysql
  • / var / lib / postgres:/ var / lib / postgres
  • / var / lib / mariadb:/ var / lib / mariadb
  • / var / lib / memcached:/ var / lib / memcached
  • / var / lib / redis:/ data
  • / var / lib / neo4j:/ var / lib / neo4j / data
  • / var / lib / mongo:/ data / db
    在下面添加更多容器

当我登录工作区并更改文件时,它们会反映到主机中,因此我很擅长这方面 .

这是我的工作容器中的文件夹结构(就像视频一样):

root@d463d55e545b:/var/www/laravel# ls -l
total 30
drwxrwxrwx 1 1000 staff 4096 Jul 20 19:58 app
-rwxrwxrwx 1 1000 staff 1646 Jul 20 19:58 artisan
drwxrwxrwx 1 1000 staff    0 Jul 20 19:58 bootstrap
-rwxrwxrwx 1 1000 staff 1272 Jul 20 19:58 composer.json
drwxrwxrwx 1 1000 staff 4096 Jul 20 19:58 config
drwxrwxrwx 1 1000 staff 4096 Jul 20 19:58 database
-rwxrwxrwx 1 1000 staff  503 Jul 20 19:58 gulpfile.js
-rwxrwxrwx 1 1000 staff   12 Jul 21 15:13 index.html
drwxrwxrwx 1 1000 staff 4096 Jul 23 09:24 laradock
-rwxrwxrwx 1 1000 staff  212 Jul 20 19:58 package.json
-rwxrwxrwx 1 1000 staff 1026 Jul 20 19:58 phpunit.xml
drwxrwxrwx 1 1000 staff 4096 Jul 23 10:39 public
-rwxrwxrwx 1 1000 staff 1918 Jul 20 19:58 readme.md
drwxrwxrwx 1 1000 staff    0 Jul 20 19:58 resources
-rwxrwxrwx 1 1000 staff  567 Jul 20 19:58 server.php
drwxrwxrwx 1 1000 staff    0 Jul 20 19:58 storage
drwxrwxrwx 1 1000 staff    0 Jul 20 19:58 tests
drwxrwxrwx 1 1000 staff    0 Jul 20 19:59 vendor

所有nginx.conf文件等都被加载到容器中,我可以从docker exec -it看到我的nginx容器 .

作为参考,这是我的laravel.conf

server {listen 80 default_server; listen [::]:80 default_server ipv6only = on; root / var / www / laravel / public;
index index.php index.html index.htm;
server_name laravel.dev www.laravel.dev;地点 / {
try_files $ uri $ uri / /index.php$is_args$args;
}

location~ \ .php $ {
try_files $ uri /index.php = 404;
fastcgi_pass php-upstream;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $ document_root $ fastcgi_script_name;
包括fastcgi_params;
}

location~ /.ht {
否认所有;
}
}

和nginx.conf:

用户www-data; worker_processes 4; pid /run/nginx.pid; events {worker_connections 2048; multi_accept on;使用epoll; } http {server_tokens off; sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 15; types_hash_max_size 2048; client_max_body_size 20M;包括/etc/nginx/mime.types; default_type application / octet-stream; access_log on; error_log on; gzip on; gzip_disable“msie6”; include /etc/nginx/conf.d/.conf;包括/ etc / nginx / sites-available /; open_file_cache max = 100;守护进程;

这是我的laravel的根目录的.env文件:

APP_ENV =本地APP_DEBUG =真APP_KEY = SomeRandomString APP_URL = http:// localhost DB_CONNECTION = mysql DB_HOST = 192.168.99.100 DB_PORT = 3306 DB_DATABASE = homestead DB_USERNAME = homestead DB_PASSWORD = secret CACHE_DRIVER = file SESSION_DRIVER = file QUEUE_DRIVER = sync REDIS_HOST = 192.168 . 99.100 REDIS_PASSWORD = null REDIS_PORT = 6379 MAIL_DRIVER = smtp MAIL_HOST = mailtrap.io MAIL_PORT = 2525MAIL_USERNAME = null MAIL_PASSWORD = null MAIL_ENCRYPTION = null

我还通过登录工作区容器并键入以下内容来设置文件夹的权限:

chmod -R 777存储引导/缓存

但我仍然在docker-machine ip上得到http 500错误 . 我错过了什么?

1 回答

  • 0

    我看到的一个潜在问题是您在.env中使用服务主机(DB_HOST,REDIS_HOST)的IP地址 . 这些IP地址可能会发生变化,因此使用容器名称作为主机地址更安全 . 在您的情况下,您将要使用“DB_HOST = mysql”和“REDIS_HOST = redis” .

    http 500意味着您的nginx配置可能没有任何问题,听起来更像是Laravel配置问题 . 我建议您检查laravel日志文件( storage/logs/laravel.log )以获取更多信息 .

相关问题