Docker nginx не видит volume wordpress'a
Все просто: есть контейнер nginx и контейнер wordpress с fpm:
(docker-compose.yml)
version: '3.7'
services:
wordpress:
image: wordpress:5.1.1-fpm-alpine
container_name: wordpress
volumes:
- wordpress_volume:/var/www/html
networks:
- app-network
webserver:
depends_on:
- wordpress
image: nginx:1.15.12-alpine
container_name: webserver
ports:
- "80:80"
volumes:
- wordpress_volume:/var/www/wordpress
- ./nginx-conf:/etc/nginx/conf.d
networks:
- app-network
volumes:
wordpress_volume:
networks:
app-network:
driver: bridge
(.nginx-conf/nginx.conf)
server {
listen 80;
listen [::]:80;
server_name example.com www.example.com;
index index.php index.html index.htm;
root /var/www/wordpress;
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass wordpress:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
location ~ /\.ht {
deny all;
}
location = /favicon.ico {
log_not_found off; access_log off;
}
location = /robots.txt {
log_not_found off; access_log off; allow all;
}
location ~* \.(css|gif|ico|jpeg|jpg|js|png)$ {
expires max;
log_not_found off;
}
}
Запускаю, перехожу на localhost и вижу: File not found.
При этом, файлы внутри контейнера nginx существуют (проверял через docker exec -i -t webserver /bin/sh).
Если же я пропишу путь в конфиге "root /var/www/html;" и примонтирую к этой директории директорию с вордпресс то все ок, но мне это не подходит.
Я ещё совсем новичок в докере/nginx и наверное ошибаюсь в чем-то фундаментальном, помогите мне. Заранее спасибо.
Ответы (1 шт):
Проблема была в переменной $document_root в nginx.conf, так как она хранила путь root, который используется контейнером с nginx'ом, а для php-fpm нужен был путь внутри своего контейнера:
fastcgi_param SCRIPT_FILENAME /var/www/html/$fastcgi_script_name;
(wordpress по умолчанию устанавливается в эту папку, поэтому путь к ней и указываем)