Ако работите с PHP и искате да имате един процес на контейнер, тогава препоръчвам да използвате Nginx и да използвате PHP-FPM, тъй като е значително по-лесно за конфигуриране от Apache за този тип настройка (поне това е, което аз намерих).
Трябва да се уверите, че имате общ споделен обем както за Nginx, така и за PHP контейнерите. В този том ще имате своя index.php
. Ето един груб пример docker-compose.yml:
services:
php7:
image: "php:7.1.10-fpm"
container_name: "prefix-php"
volumes:
- "./your/local/dir:/var/www/html"
nginx:
image: "nginx:1.13.6"
container_name: "prefix-nginx"
ports:
- "80:80"
- "443:443"
links:
- "php7"
volumes:
- "./your/local/dir:/var/www/html"
След това ще изпълните следната команда в директорията, където docker-compose.yml
файлът е:
$ docker-compose -p prefix
Причината за „префикс“ е, че създавате групиране на проекти за вашите контейнери, за да не влизат в конфликт с имената на други контейнери.
Естествено тогава ви е необходима конфигурация на сайта на nginx, която сочи към /var/www/html
. Ще имате почти никакви изисквания за конфигурация за php-fpm контейнера.
Странична бележка относно конфигурацията на nginx. Горният docker-compose.yml е непълен без препратката към php контейнера в конфигурацията на nginx. Това би изглеждало така (грубо казано):
server {
listen 80 default_server;
# ...more config, like root, index, server_name, etc
location ~* \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass prefix-php:9000; # Note the container name here.
fastcgi_index index.php;
fastcgi_hide_header X-Powered-By;
fastcgi_read_timeout 300s;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location / {
try_files $uri $uri/ /index.php?$query_string;
}
# ...more rules
}
Ще забележите, че нарекох контейнера "php7", всъщност бихте могли да добавите друг контейнер "php5" към този docker-compose.yml
и след това това ви позволява да дефинирате nginx сайтове, които използват различни версии на PHP, всички работещи на една и съща настройка на docker-compose.
Оценявам, че това не дава директен отговор на въпроса ви, тъй като не го решава с помощта на apache, но е алтернатива, която трябва да обмислите.
Надяваме се, че това поне ви дава идеи, които да ви помогнат да решите настройката си.