当前位置: 首页 > 知识库问答 >
问题:

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

高宏峻
2023-03-14

无论我尝试什么,当我访问docker机器ip时,我总是得到HTTP错误代码500。

我运行laradock通过Docker工具箱(操作系统:Windows 10),并有一个默认的虚拟机运行。我已经按照视频中的说明设置laradock。

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

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

版本:'2'

服务:

nginx:
    build: ./nginx
    volumes_from:
        - volumes_source
    volumes:
        - ./logs/nginx/:/var/log/nginx
    ports:
        - "80:80"
        - "443:443"
    links:
        - php-fpm
php-fpm:
    build:
        context: ./php-fpm
        dockerfile: Dockerfile-70
    volumes_from:
        - volumes_source
    expose:
        - "9000"
    links:
        - workspace
mysql:
    build: ./mysql
    volumes_from:
        - volumes_data
    ports:
        - "3306:3306"
    environment:
        MYSQL_DATABASE: homestead
        MYSQL_USER: homestead
        MYSQL_PASSWORD: secret
        MYSQL_ROOT_PASSWORD: root
postgres:
    build: ./postgres
    volumes_from:
        - volumes_data
    ports:
        - "5432:5432"
    environment:
        POSTGRES_DB: homestead
        POSTGRES_USER: homestead
        POSTGRES_PASSWORD: secret
mariadb:
    build: ./mariadb
    volumes_from:
        - volumes_data
    ports:
        - "3306:3306"
    environment:
        MYSQL_DATABASE: homestead
        MYSQL_USER: homestead
        MYSQL_PASSWORD: secret
        MYSQL_ROOT_PASSWORD: root
neo4j:
    build: ./neo4j
    ports:
        - "7474:7474"
        - "1337:1337"
    environment:
        - NEO4J_AUTH=homestead:secret
    volumes_from:
        - volumes_data
mongo:
    build: ./mongo
    ports:
        - "27017:27017"
    volumes_from:
        - volumes_data
redis:
    build: ./redis
    volumes_from:
        - volumes_data
    ports:
        - "6379:6379"
memcached:
    build: ./memcached
    volumes_from:
        - volumes_data
    ports:
        - "11211:11211"
    links:
        - php-fpm
beanstalkd:
    build: ./beanstalkd
    ports:
        - "11300:11300"
    privileged: true
    links:
        - php-fpm
beanstalkd-console:
    build: ./beanstalkd-console
    ports:
        - "2080:2080"
    links:
        - beanstalkd
workspace:
    build:
        context: ./workspace
        args:
            - INSTALL_PRESTISSIMO=false
    volumes_from:
        - volumes_source
    tty: true
volumes_source:
    build: ./volumes/application
    volumes:
        - /c/Users/pomodoro.xyz/code:/var/www/laravel
volumes_data:
    build: ./volumes/data
    volumes:
        - /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

正如我从docker exec看到的,所有nginx.conf文件等都被加载到了容器中——它被加载到了我的nginx容器中。

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

server{听80default_server;听[::]: 80default_serveripv6Only=on;

root /var/www/laravel/public;
index index.php index.html index.htm;

服务器名称:laravel.dev www.laravel.dev;

location / {
     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;
    include fastcgi_params;
}

location ~ /\.ht {
    deny all;
}

}

和nginx.conf:

用户www数据;工人4;pid/run/nginx.pid;

事件{worker_connections 2048;multi_accept on;use epoll;}

http{server_tokens off;sendfile on;tcp_nopush on;tcp_nodelay on;keepalive_timeout 15;type_hash_max_size 2048;client_max_body_size 20M;include/etc/nginx/mime.types;默认_type应用程序/octet流;access_登录;error_登录;gzip开启;gzip_禁用“msie6”;include/etc/nginx/conf.d/.conf;include/etc/nginx/sites available/;open_file_cache max=100;}

守护进程关闭;

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

APP_ENV=本地APP_DEBUG=真APP_KEY=APP_URL=http://localhost

数据库连接=mysql数据库主机=192.168.99.100数据库端口=3306数据库=homestead数据库用户名=homestead数据库密码=secret

缓存驱动程序=文件会话驱动程序=文件队列驱动程序=同步

REDIS_主机=192.168.99.100 REDIS_密码=空REDIS_端口=6379

邮件驱动程序=smtp邮件\u主机=mailtrap.io邮件\u端口=2525邮件\u用户名=null邮件\u密码=null邮件\u加密=null

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

chmod-R 777存储引导/缓存

但我仍然得到超文本传输协议500错误的docker-机器ip。我错过了什么?

共有1个答案

郎和志
2023-03-14

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

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

 类似资料:
  • 问题内容: 我真的很难站起来从html页面到我的node.js应用程序然后再回到html页面的双向数据传输。 我很确定我已经找到了正确的解决方案,但是我只是没有使它起作用。 我在node.js应用程序中使用了以下内容: 以下是我的html页面: 因此,当我运行节点应用程序时,服务器运行正常。当我启动html页面时,收到警报“在这里!”。当我按下按钮“ NameGameIt”时,我收到警报“现在怎么

  • 因此,我使用服务器(google-app-engine)在客户端应用程序上进行身份验证。当我使用JavaFX、Webview或HttpsURLConnection时,一切都很好,它们连接起来了,但是当我使用HttpClient时,它会抛出以下错误 javax.net.ssl.sslpeerunverifiedexception:peer未在sun.security.ssl.sslsessionim

  • 我在服务层的spring-boot应用程序中使用了Hystrix(Camden.sr7版本),而没有回退方法。Service的方法之一如下所示: 对于这样的响应,不清楚实际上是从哪个方法抛出异常的。如果我将版本更改为brixton.sr5(以前的版本),它将返回清晰的响应: 因此Hystrix的新版本(实际上是spring-cloud-dependencies的新版本)不会抛出HystrixRun

  • JMeter HTTP请求-404错误 当我运行jmx文件时,其中一个HTTP请求文件会抛出404错误。屏幕截图如上图所示。 有人能为这个问题提出一些解决方案吗?

  • 我对Docker和ZK映像有一个非常大的问题。这不会在我的机器上本地发生,但当我在docker上运行时,它会抛给我这个错误:这里有错误 Docker文件: 我通过打字来建造 > 2.docker构建-tmy_image。 3.sudo docker run-p 8080:8080资产 然后它向我抛出了照片中的错误。 请帮帮我,因为我什么都找不到。

  • 既然我们可以在Javascript中使用关键字抛出任何东西,那么我们就不能直接抛出一个错误消息字符串吗? 有人知道这里面有什么陷阱吗? 让我对此添加一些背景:在JavaScript世界中,人们通常依赖参数检查而不是使用try-catch机制,因此只使用抛出致命错误是有意义的。不过,为了能够捕捉一些系统错误,我必须为我自己的错误使用一个不同的类,而不是创建错误的子类,我认为我应该只使用String。