【问题标题】:Laravel Not Found, Docker, Apache2未找到 Laravel、Docker、Apache2
【发布时间】:2020-06-29 05:43:14
【问题描述】:

我正在准备连接到我的容器,但出现以下错误。在我的容器正常工作之前。我做了一个新的构建,但它不起作用。

我的 Docker 文件如下:

FROM php:7.2-apache

LABEL maintainer="christianahvilla@gmail.com"

# Install PHP
RUN apt-get update && apt-get install -y \
    curl \
    zlib1g-dev \
    libzip-dev \
    nano

# Add and Enable PHP-PDO Extenstions
RUN docker-php-ext-install mysqli pdo pdo_mysql
RUN docker-php-ext-enable pdo_mysql
RUN docker-php-ext-install zip

# # Install PHP Composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer

#set our application folder as an environment variable
ENV APP_HOME /var/www/html

#change uid and gid of apache to docker user uid/gid
RUN usermod -u 1000 www-data && groupmod -g 1000 www-data

COPY --chown=www-data:www-data . $APP_HOME

#Expose Port 8000 since this is our dev environment
EXPOSE 8000

我的 Docker-Compose:

version: "3.7"
services: 
    #Laravel App
    web:
        build:
            context: .
            dockerfile: Dockerfile
        ports:
            - 8000:80
        volumes:
            - ./:/var/www
            - ./public:/var/www/html
        networks:
            - mynet
        depends_on: 
            - db

    #MySQL Service
    db:
        image: mysql:5.7
        container_name: db
        ports:
            - 3306:3306
        environment:
            MYSQL_DATABASE:
            MYSQL_USER: 
            MYSQL_PASSWORD: 
            MYSQL_ROOT_PASSWORD: 
        volumes:
            - mysqldata:/var/lib/mysql/
        networks:
            - mynet

#Docker Networks
networks:
    mynet:
        driver: bridge
#Volumes
volumes:
    mysqldata:
        driver: local

当我尝试访问 http:localhost:8000/ 时,我可以做到,但如果我尝试访问另一条路由,则会出现错误。

【问题讨论】:

  • 我怀疑 RUN a2enmod rewrite 必须在 Dockerfile 中执行。实际上,试试http:localhost:8000/index.php/custom-route,你就会猜到我的猜想是对还是错。

标签: laravel apache docker docker-compose


【解决方案1】:

你必须从Dockerfile配置/etc/apache2/apache2.conf中的apache2.conf,还有a2endmode rewrite,最后你需要重启apache2:

RUN sed -i '/<Directory \/var\/www\/>/,/<\/Directory>/ s/AllowOverride None/AllowOverride All/' /etc/apache2/apache2.conf
RUN a2enmod rewrite
RUN service apache2 restart

然后运行docker-compose builddocker-compose up -d

【讨论】:

  • 感谢您解决我的问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多