无法通过Docker中的Apache访问我的Laravel项目-/ var / www /目录为空

时间:2019-03-15 14:50:36

标签: laravel apache docker docker-compose dockerfile

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

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

在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 exec -it),实际上,/ var / www / html目录不存在,一旦/ var / www目录为空,但是不应该

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

我已经尝试解决了一段时间,所以如果有人可以帮助我,我将非常感激。

这是php-apache.dockerfile:

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

还有docker-compose.yml:

{{1}}

1 个答案:

答案 0 :(得分:0)

您的docker-compose.yml文件似乎出了问题。 /var/www文件中的卷映射隐藏了要复制到php-apache.dockerfiledocker-compose.yml的文件。从撰写文件中删除以下行:

  volumes:
    - ./:/var/www