Я пытаюсь настроить среду разработки, используя докер, используя 2 контейнера: nginx
и php7-fpm
.
То, что я хочу сделать, - это когда пользователь посещает любой URL, содержащий /api
, он использует php-fpm, но все остальное загружается из /var/www/html
.
Вот моя конфигурация:
site.conf:
server {
index index.html;
server_name impressive.local;
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
root /var/www/html;
location /api {
index index.php;
alias /var/www/api;
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass php:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}
}
докер-compose.yml
web:
image: nginx
volumes:
- ./frontend/public:/var/www/html
- ./site.conf:/etc/nginx/conf.d/site.conf
links: [ php ]
ports:
- "8080:80"
environment:
- NGINX_HOST=http://impressive.local
- NGINX_PORT=80
php:
image: php:7-fpm
volumes:
- ./api:/var/www/api
Это не работает, как ожидалось, и когда я посещаю impressive.local/api
, я получаю следующую ошибку в журналах:
web_1 | 2019/01/10 12:23:47 [error] 6#6: *1 "/var/www/api/index.php" is not found (2: No such file or directory), client: 172.17.0.1, server: impressive.local, request: "GET /api/ HTTP/1.1", host: "impressive.local:8080"
Я понимаю, что контейнер php-fpm содержит каталог /var/www/api
, а не nginx. С моей конфигурацией nginx пытается alias
к несуществующему пути и поэтому терпит неудачу.
Мой вопрос: как этого добиться?