Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to change the document root in PHP:7.1-apache from docker-compose.yml

I am trying to set up an environment for Laravel, and in that process I want to change my document root into a public folder. I made this work in a Dockerfile, but in reality I much rather want it in a docker-compose.yml file.

I feel that I have implemented the required environment commands from their documentation

My code looks as

docker-compose.yml:

version: '3'

services:
    laravel:
        image: php:7.1-apache
        ports:
            - 8080:80
        env_file: ./.env
        environment:
            - "APACHE_DOCUMENT_ROOT=/var/www/html/public"
            - "sed -ri -e 's!/var/www/html!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/sites-available/*.conf"
            - "sed -ri -e 's!/var/www/!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/apache2.conf /etc/apache2/conf-available/*.conf"
        volumes:
            - ./src/:/var/www/html/

.env

APACHE_DOCUMENT_ROOT=/var/www/html/public

I first tried without the .env file, but then it gave me an error stating that the APACHE_DOCUMENT_ROOT variable was not set. Which is why I have the external .env file.

Can anybody lead me in a direction for improving this yml, so I have a different document root for my Apache?

Thank you in advance.

like image 335
kjc Avatar asked Jul 18 '18 04:07

kjc


1 Answers

I found a solution for this issue. basically, it worked when I created a Dockerfile with build commands. So the following structure fixed the issue:

docker-compose.yml

version: '3'
services:
    web:
        build: .
        ports:
            - 80:80
        volumes:
            - ./src:/var/www/html

Dockerfile

FROM php:7.1-apache

ENV APACHE_DOCUMENT_ROOT=/var/www/html/public
RUN sed -ri -e 's!/var/www/html!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/sites-available/*.conf
RUN sed -ri -e 's!/var/www/!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/apache2.conf /etc/apache2/conf-available/*.conf

Just remember to run docker-compose build before running the image (if anybody else have the same problem).

like image 190
kjc Avatar answered Sep 23 '22 01:09

kjc