0

I am traying to connect to my container but I am getting the following error. Before my container works without problems. I made a new build but it doesn’t work.

My Docker file is the following:

FROM php:7.2-apache

LABEL maintainer="[email protected]"

# 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

My 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

When I try to access to http:localhost:8000/ I can do it but if I try to access to another route I get the error.

enter image description here

1
  • I'd suspect that RUN a2enmod rewrite has to be executed in Dockerfile. Actually, try http:localhost:8000/index.php/custom-route and you'll get my suspicion right or wrong. Commented Mar 18, 2020 at 11:55

1 Answer 1

4

You have to configure the apache2.conf in /etc/apache2/apache2.conf from Dockerfile, and also a2endmode rewrite, finally you need to restart apache2:

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

Then run docker-compose build and docker-compose up -d

Sign up to request clarification or add additional context in comments.

1 Comment

Thank you for fixing my problem

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.