2016-02-16 9 views
5

私はLaravel 5.2アプリケーションをドッキングしようとしています。このために、私は以下の画像を使用しています、Docker apache2は新しい000-default.confを考慮しません

php:apache 
mysql:5.7 
以下

は私の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 

であると私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 

Dockerfiledocker-compose.ymlの両方がlaravelルートディレクトリにあります。 laravelベースのアプリを実行するには、サーバーがpublicフォルダを指している必要があります。だから、あなたは

、私は000-default.confファイルの下でapache2のデフォルトの設定ファイルを置き換えています

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

    ErrorLog ${APACHE_LOG_DIR}/error.log 
    CustomLog ${APACHE_LOG_DIR}/access.log combined 
</VirtualHost> 
を見ることができるすべては docker-compose upコマンドの細かい実行されますが、私は localhost:9899を参照するとき、私はForbiddenになったが、 localhost:9899/publicは正しく laravelアプリを起動します。つまり、私の提供した 000-default.confは効果がなく、サーバーはまだ /var/www/html/publicの代わりに /var/www/html/を指しています。

だから、execを試して、実行中のコンテナに入り、000-default.confを確認してください。そして、デフォルトの代わりに私のファイルを見ることができました。私はこの問題の周りに頭を上げていません。私はApacheが私の000-default.confを考慮してほしい。皆さん、私が間違っていることを皆さんに見ていただければ幸いです。

答えて

3

Apacheはsites-availableディレクトリを調べず、sites-enabledディレクトリを調べます。 あなたはどちらかADD後者のディレクトリにあなたの設定ファイルは、シンボリックリンクまたは設定することができます。サイト対応で

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

設定ファイルの中のファイルを指すシンボリックリンクのサイトは、利用可能です –

関連する問題