Hvis du arbejder med PHP, og du ønsker at have en enkelt proces pr. container, så anbefaler jeg at bruge Nginx og bruge PHP-FPM, da det er væsentligt nemmere at konfigurere end Apache til denne type opsætning (det er i hvert fald, hvad jeg har fundet).
Du skal sikre dig, at du har en fælles delt volumen til både Nginx- og PHP-beholderne. I det bind ville du have din index.php
. Her er et råt eksempel på 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"
Du vil derefter køre følgende kommando i mappen, hvor docker-compose.yml
filen er:
$ docker-compose -p prefix
Årsagen til "præfiks" er, at du opretter en projektgruppering for dine containere for ikke at kollidere med andre containernavne.
Naturligvis har du så brug for en nginx-webstedskonfiguration, der peger på /var/www/html
. Du har få eller ingen konfigurationskrav til php-fpm-beholderen.
En sidebemærkning vedrørende nginx-konfigurationen. Ovenstående docker-compose.yml er ufuldstændig uden henvisning til php-beholderen i nginx-konfigurationen. Dette ville se sådan ud (groft sagt):
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
}
Du vil bemærke, at jeg kaldte containeren "php7", du kunne faktisk tilføje en anden "php5" container til denne docker-compose.yml
og så giver det dig mulighed for at definere nginx-websteder, der bruger forskellige versioner af PHP, som alle kører på den samme docker-compose-opsætning.
Jeg forstår, at dette ikke svarer direkte på dit spørgsmål, da det ikke løser det ved hjælp af apache, men det er et alternativ at overveje.
Forhåbentlig giver dette dig i det mindste ideer til at hjælpe med at løse din opsætning.