Ich versuche, Laravel 5.2 App zu docken. Dafür ich folgende Bilder verwenden,Docker Apache2 wird nicht als neue 000-default.conf betrachten
php:apache
mysql:5.7
Unten ist mein 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
Und mein 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
Beide Dockerfile
und docker-compose.yml
sind im laravel
Stammverzeichnis. Um eine Laravel-basierte App auszuführen, muss der Server auf den Ordner public
verweisen. So können Sie sehen, ich bin zu ersetzen apache2
‚s Standard-Konfigurationsdatei mit unter 000-default.conf
Datei,
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot /var/www/html/public
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Alles läuft gut auf docker-compose up
Befehl aber, wenn ich localhost:9899
durchsuchen ich Forbidden Fehler, aber localhost:9899/public
startet laravel
App richtig. Das bedeutet, dass mein geliefertes 000-default.conf
keinen Effekt hat und der Server immer noch auf /var/www/html/
statt /var/www/html/public
zeigt.
So versuchte ich, exec
in laufenden Container zu bekommen, um die 000-default.conf
zu überprüfen. Und ich konnte meine Datei anstelle von Standard sehen. Ich verstehe diesen Punkt nicht. Ich möchte, dass Apache meine 000-default.conf
berücksichtigt. Ich hoffe, ihr könnt sehen, was ich falsch mache.
Konfigurationsdatei in sites-enabled ist ein symbolischer Link, der in der Datei verweist sites-available –