【问题标题】:Can't access my Laravel project through Apache in Docker - /var/www/ directory is empty无法通过 Docker 中的 Apache 访问我的 Laravel 项目 - /var/www/ 目录为空
【发布时间】:2019-08-06 16:32:02
【问题描述】:

所以我为我正在处理的 Laravel 项目构建了一个 Docker 映像,但是当我运行容器(使用 docker-compose up)时,我无法访问该应用程序。

我目前正在使用 Docker Toolbox for Windows,所以我使用来自 docker-machine 的 IP,但我得到的只是“在此服务器上找不到请求的 URL /”。 (404)。

在 Docker 终端中,我收到以下警告:

php-apache_1  | AH00112: Warning: DocumentRoot [/var/www/html] does not exist
php-apache_1  | AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.18.0.3. Set the 'ServerName' directive globally to suppress this message

php-apache_1  | [Fri Mar 15 14:04:10.964296 2019] [core:notice] [pid 1] AH00094: Command line: 'apache2 -D FOREGROUND'

我浏览了容器内的目录(使用 docker exec -it),实际上 /var/www/html 目录不存在,一旦 /var/www 目录为空,但它不应该是!!

在 php-apache.dockerfile 中我将所有项目复制到 /var/www 目录,所以它不应该为空。

我已经尝试解决这个问题一段时间了,所以如果有人可以帮助我,我将不胜感激。

这里是 php-apache.docker 文件:

FROM php:7.2.9-apache-stretch

RUN apt-get update && apt-get install -y libxml2-dev && apt-get install -y 
libcurl3-dev
RUN docker-php-ext-install pdo_mysql mbstring tokenizer xml ctype json

RUN mkdir storage &&\
    mkdir storage/logs &&\
    mkdir storage/app &&\
    mkdir storage/framework &&\
    mkdir storage/framework/cache &&\
    mkdir storage/framework/sessions &&\
    mkdir storage/framework/views &&\
    mkdir -p bootstrap/cache

COPY composer.json composer.lock /var/www/

WORKDIR /var/www

COPY . /var/www

RUN curl --silent https://getcomposer.org/installer | php &&\
    composer install

COPY public /var/www/html

RUN chown -R www-data:www-data \
    /var/www/storage \
    /var/www/bootstrap/cache

RUN a2enmod rewrite

EXPOSE 80

还有 docker-compose.yml:

version: '3'
services:
  db:
    image: mysql:latest
    environment:
      - MYSQL_USER=root
      - MYSQL_ROOT_PASSWORD=
      - MYSQL_DATABASE=ontologyFramework
      - MYSQL_ALLOW_EMPTY_PASSWORD=yes
    ports:
      - "3306:3306"   

  php-apache:
    depends_on:
      - db
    build:
      dockerfile: phpapache.dockerfile
      context: .
    volumes:
      - ./:/var/www
    ports:
      - "80:80"
    environment:
      - DB_PORT=3306
      - DB_HOST=127.0.0.1
    links:
      - db

【问题讨论】:

    标签: laravel apache docker docker-compose dockerfile


    【解决方案1】:

    看来问题出在您的 docker-compose.yml 文件上。您在php-apache.dockerfile 中复制到/var/www 的文件被docker-compose.yml 文件中的卷映射隐藏。从撰写文件中删除以下行:

      volumes:
        - ./:/var/www
    

    【讨论】:

      猜你喜欢
      • 2014-06-30
      • 1970-01-01
      • 1970-01-01
      • 2016-06-18
      • 2018-10-19
      • 1970-01-01
      • 2014-07-26
      • 1970-01-01
      • 2010-11-18
      相关资源
      最近更新 更多