使用 Docker 和 Laravel 访问 http://localhost 时遇到 404 错误
P粉486138196
P粉486138196 2023-12-20 16:47:54
0
1
382

以下是我的 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粉486138196
P粉486138196

全部回复(1)
P粉506963842

您必须配置您的 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;

}
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!