Pokud pracujete s PHP a chcete mít jeden proces na kontejner, pak doporučuji používat Nginx a používat PHP-FPM, protože pro tento typ nastavení je podstatně jednodušší konfigurovat než Apache (alespoň já to tak 'našel).
Musíte zajistit, že máte společný sdílený svazek pro kontejnery Nginx i PHP. V tomto svazku byste měli svůj index.php
. Zde je hrubý příklad 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"
Poté byste spustili tento následující příkaz v adresáři, kde je docker-compose.yml
soubor je:
$ docker-compose -p prefix
Důvodem "prefixu" je to, že vytvoříte seskupení projektů pro své kontejnery, aby nedošlo ke konfliktu s jinými názvy kontejnerů.
Přirozeně pak potřebujete konfiguraci webu nginx, která ukazuje na /var/www/html
. Pro kontejner php-fpm budete mít malé nebo žádné požadavky na konfiguraci.
Vedlejší poznámka týkající se konfigurace nginx. Výše uvedený soubor docker-compose.yml je neúplný bez odkazování na kontejner php v konfiguraci nginx. Toto by vypadalo takto (zhruba řečeno):
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
}
Všimněte si, že jsem kontejner pojmenoval "php7", ve skutečnosti byste do tohoto docker-compose.yml
mohli přidat další kontejner "php5" a to vám umožní definovat weby nginx, které používají různé verze PHP a všechny běží na stejném nastavení docker-compose.
Oceňuji, že to přímo neodpovídá na vaši otázku, protože to neřeší pomocí Apache, ale je to alternativa ke zvážení.
Doufejme, že vám to poskytne alespoň nápady, které vám pomohou vyřešit vaše nastavení.