首頁  >  問答  >  主體

使用 Docker 和 Laravel 造訪 http://localhost 時遇到 404 錯誤

以下是我的 docker-compose.yml

version: "3.7"

services:
  php:
    build:
      context: .
    volumes:
      - ".:/app"
      - "~/.ssh:/root/.ssh"
      #- '$SSH_AUTH_SOCK:/ssh-agent'
    environment:
      SSH_AUTH_SOCK: "/ssh-agent"
      APP_NAME: "Docker Laravel"
      APP_ENV: "test"
      APP_KEY: ""
      APP_DEBUG: "true"
      APP_URL: "/"
      APP_TIMEZONE: "UTC"
      DB_ECLIPSE_HOST: "db"
      DB_ECLIPSE_PORT: "3306"
      DB_ECLIPSE_DATABASE: "app_menu"
      DB_ECLIPSE_USERNAME: "homestead"
      DB_ECLIPSE_PASSWORD: "homestead"
    expose:
      - 9000
    depends_on:
      - db

  nginx:
    build:
      context: "./docker/nginx"
    ports:
      - "80:80"
    environment:
      NGINX_PHP_UPSTREAM: php
      # Start URI with /template/...
      NGINX_URI_PREFIX: /
    volumes:
      - "./var/log/nginx:/var/log/nginx"
    depends_on:
      - php

  db:
    build:
      context: ./docker/mysql
    ports:
      - "3306:3306"
    volumes:
      - db_volume:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: "homestead"
      MYSQL_ECLIPSE_HOST: db
      MYSQL_ECLIPSE_DATABASE: "app_menu"
      MYSQL_ECLIPSE_USER: "homestead"
      MYSQL_ECLIPSE_PASSWORD: "homestead"
      MYSQL_AUTH_COMMAND: --default-authentication-plugin=mysql_native_password

  elk:
    image: "willdurand/elk"
    ports:
      - "900:85"
    volumes:
      - "./docker/logstash:/etc/logstash"
      - "./docker/logstash/patterns:/opt/logstash/patterns"
      - "./var/log/laravel:/var/log/laravel"
      - "./var/log/nginx:/var/log/nginx"

volumes:
  db_volume:

下面是我的 Dockerfile

FROM php:7.3-fpm

RUN apt-get update

RUN apt-get install -y libzip-dev git procps unzip

RUN docker-php-ext-install -j$(nproc) zip

RUN pecl install xdebug-3.0.4 && docker-php-ext-enable xdebug

RUN curl -o /tmp/security_checker -L "https://github.com/fabpot/local-php-security-checker/releases/download/v1.0.0/local-php-security-checker_1.0.0_linux_amd64" 
    && mv /tmp/security_checker /usr/bin/local-php-security-checker 
    && chmod +x /usr/bin/local-php-security-checker

# Install composer from docker repo
COPY --from=composer:latest /usr/bin/composer /usr/local/bin/composer

RUN docker-php-ext-install mysqli pdo pdo_mysql && docker-php-ext-enable pdo_mysql

WORKDIR /app

ADD docker/php/php.ini $PHP_INI_DIR/conf.d/
ADD docker/php/xdebug.ini  $PHP_INI_DIR/conf.d/

EXPOSE 9000

# Likely don't need to force this to the foreground.  If it fails add `-F` option
CMD ["php-fpm"]
PHP版本:7.3 Laravel 8

P粉486138196P粉486138196327 天前415

全部回覆(1)我來回復

  • P粉506963842

    P粉5069638422023-12-21 14:33:39

    您必須設定您的 nginx。 Nginx預設路由是/etc/nginx/html/。 所以你需要一條像這樣的路線。

    location / {
          proxy_pass http://php:9000/;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header Host $host;
          proxy_http_version 1.1;
          proxy_set_header Connection "Keep-Alive";
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    
    }

    回覆
    0
  • 取消回覆