2016-02-16 16 views
5

Sto provando ad aggiornare l'app Laravel 5.2. Per questo sto usando immagini che seguono,Docker apache2 non prenderà in considerazione il nuovo 000-default.conf

php:apache 
mysql:5.7 

Qui di seguito è il mio docker-compose.yml

web: 
    build: . 
    volumes: 
    - ./:/var/www/html 
    ports: 
    - "9899:80" 
    links: 
    - db 
    command : [/usr/sbin/apache2ctl, -D, FOREGROUND] 

db: 
    image: mysql:5.7 
    volumes: 
    - /home/data:/var/lib/mysql 
    environment: 
    MYSQL_DATABASE: custom 
    MYSQL_ROOT_PASSWORD: custom 

E il mio Dockerfile

FROM php:apache 
RUN apt-get update && docker-php-ext-install pdo pdo_mysql 
RUN rm -f /etc/apache2/sites-available/000-default.conf 
ADD ./settings/000-default.conf /etc/apache2/sites-available 

Sia Dockerfile e docker-compose.yml sono nella directory radice laravel. Per eseguire l'applicazione basata su laravel, il server deve fare riferimento alla cartella public. Così, si può vedere Sto sostituendo il file di configurazione apache2 s' default con sotto 000-default.conf di file,

<VirtualHost *:80> 
    ServerAdmin [email protected] 
    DocumentRoot /var/www/html/public 

    ErrorLog ${APACHE_LOG_DIR}/error.log 
    CustomLog ${APACHE_LOG_DIR}/access.log combined 
</VirtualHost> 

Tutto funziona bene su docker-compose up comando, ma, quando navigo localhost:9899 ottengo l'errore Forbidden, ma localhost:9899/public lancia correttamente laravel app. Ciò significa che il mio 000-default.conf fornito non ha effetto e il server punta ancora su /var/www/html/ anziché su /var/www/html/public.

Così ho provato, exec per entrare nel contenitore in esecuzione per controllare il 000-default.conf. E potrei vedere il mio file invece di default. Non ho la testa intorno a questo problema. Voglio che apache consideri il mio 000-default.conf. Spero che voi ragazzi potete vedere cosa sto sbagliando.

risposta

3

Apache non esamina la directory sites-available ma piuttosto nella directory sites-enabled. È possibile ADD tuo config-file in quest'ultima directory, o impostare un link simbolico:

ADD ./settings/000-default.conf /etc/apache2/sites-available 
RUN ln -s /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-enabled/000-default.conf 
+0

file di configurazione in siti abilitati è un link simbolico che punta a file in siti-disponibili –