请教一个 Docker 和 Nginx 部署项目的问题?

查看 87|回复 5
作者:Dcynsd   
项目使用 PHP 开发,打包成镜像,部署到服务器后,接口使用都没什么问题,但是访问静态资源文件访问不了,在项目根目录下有个资源文件目录 resource,我的访问地址例如:xxx.com/resource/images/xxxx.png
我在本地开发环境是可以访问成功资源文件,本地也是 Docker 运行的,只是是使用 Docker-compose 编排了 PHP 容器和 Nginx 容器。
服务器上是直接运行了 PHP 容器,暴露 9000 端口。
求大神们看看该怎么配置!!!
Nginx 配置如下:
server {
        listen        80;
        server_name        xxx.com;
        root        /var/www/app;
    index        index.php index.html index.htm;
        location / {
                try_files $uri $uri/ /index.php;
        }
        error_page        500 502 503 504        /50x.html;
        location = /50x.html {
                root        /var/www/app;
        }
        location ~ \.php$ {
                fastcgi_pass        127.0.0.1:9000;
                fastcgi_index        index.php;
                fastcgi_split_path_info ^(.+\.php)(.*)$;
                fastcgi_param PATH_INFO $fastcgi_path_info;
                fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
                include                fastcgi_params;
        }
        location ~ /\.ht {
        deny all;
    }
}

PHP, Location, Nginx, 容器

star7th   
你可以参数我的开源项目 showdoc 的 dockerfile https://github.com/star7th/showdoc/blob/master/Dockerfile
我觉得,因为 php 无法单独运行,必须配合 nginx 类的运行中间件,所以,我建议的把 php 跟 nginx 封装到一个 docker 容器里。使用 webdevops/php-nginx:7.4-alpine 作为基础构建镜像就是不错的选择,我基本不用在环境基础问题上纠结什么的。去 dockerhub 搜索下 ,他们还提供不同版本的镜像,比如 webdevops/php-nginx:8.0-alpine
cccssss   
127.0.0.1:9000
是访问了 nginx 容器内的 9000 端口
如果 php9000 绑定了机器的 9000 端口
ports:
- 9000:9000
那么就将
127.0.0.1 换成宿主机的内网 ip 就行
或者试试将 127.0.0.1 换成 php 容器的容器名
Dcynsd
OP
  
@star7th 感谢回复,我先去试一试
chf007   
本地也是同样的 Nginx 配置文件么?看线上的配置是把所有的请求都转到 /index.php 上去了,要么把 /resource 单独转发处理一下,要么打包时静态资源发布另外一个独立静态资源域名上
IdJoel   
不推荐你这种方法,不行上个 Roadrunner 或者上个 swoole ,打俩容器太麻烦了
您需要登录后才可以回帖 登录 | 立即注册

返回顶部