gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 19:27:10 24 4
gpt4 key购买 nike

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

我目前正在使用适用于 Windows 的 Docker 工具箱,因此我使用来自 docker 机器的 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

最佳答案

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

  volumes:
- ./:/var/www

关于laravel - 无法通过 Docker 中的 Apache 访问我的 Laravel 项目 -/var/www/directory 为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55185238/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com