gpt4 book ai didi

php - 如何在两个具有不同卷路径的单独容器上设置php-fpm和nginx

转载 作者:行者123 更新时间:2023-12-02 19:05:11 25 4
gpt4 key购买 nike

我正在尝试使用2个容器使用docker设置开发环境:nginxphp7-fpm

我想发生的是,当用户访问任何包含/api的URL时,它使用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;
}
}
}

docker-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设置为不存在的路径,因此失败了。

我的问题是如何实现这一目标?

最佳答案

是的,我为所有Laravel应用程序完全使用了此配置。

这是我的配置示例...

version: '2'
services:

app:
container_name: app
build:
context: ./
dockerfile: app.dockerfile
working_dir: /var/www
volumes:
- ./:/var/www
environment:
- "DB_PORT=3306"
- "DB_HOST=x.x.x.x"
web:
container_name: web
build:
context: ./
dockerfile: web.dockerfile
working_dir: /var/www
volumes_from:
- app
ports:
- 8080:80

如您所见,您指定使用Web容器中的卷。

关于php - 如何在两个具有不同卷路径的单独容器上设置php-fpm和nginx,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54129025/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com