Próbuję dokować aplikację Laravel 5.2. Do tego używam następujących obrazów,Docker apache2 nie bierze pod uwagę nowego 000-default.conf
php:apache
mysql:5.7
Poniżej jest moje 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
i mój 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
Zarówno Dockerfile
docker-compose.yml
i znajdują się w katalogu laravel
korzeniowego. Aby uruchomić aplikację opartą na systemie laravel, serwer musi wskazywać folder public
. Tak, widać jestem zastępując apache2
„s domyślny plik konfiguracyjny z poniższej 000-default.conf
pliku
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot /var/www/html/public
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Wszystko działa poprawnie na komendę docker-compose up
ale kiedy mogę przeglądać localhost:9899
uzyskać Zakazane błąd, ale localhost:9899/public
uruchamia laravel
aplikację poprawnie. Oznacza to, że mój dostarczony 000-default.conf
nie działa i serwer nadal wskazuje na /var/www/html/
zamiast /var/www/html/public
.
Więc próbowałem, exec
, aby dostać się do uruchomionego pojemnika, aby sprawdzić 000-default.conf
. I mogłem zobaczyć mój plik zamiast domyślnego. Nie przejmuję się tym problemem. Chcę, żeby Apache rozważył moją 000-default.conf
. Mam nadzieję, że wy możecie zobaczyć, co robię źle.
pliku konfiguracyjnego w witrynach włączoną jest dowiązaniem symbolicznym, które wskazuje na plik w witrynach-dostępny –