开发者社区> 问答> 正文

docker的nginx怎么和php-fpm结合?

我创建了两个docker分别是nginx和php-fpm

nginx自己配置成功了(静态文件能访问),但是php文件报错

![image.png](https://ucc.alicdn.com/pic/developer-ecology/57ec40c411284f1a901a5ef3408e0af1.png)

这个错误!!!!!不是php写的不对,,,,,,不明所以啊

 

这是 nginx的 的配置

下面的是 在php-fpm容器里

![image.png](https://ucc.alicdn.com/pic/developer-ecology/9f92b15af716404598e06a5b6e314fed.png)

有这个文件呀!!!!

展开
收起
huc_逆天 2020-05-28 09:16:32 658 0
1 条回答
写回答
取消 提交回答
  • 首先创建php容器 MacbookdeMacBook-Pro:~ macbookpro$ docker run --name change-php -v /Users/macbookpro/Desktop/test_docker/html:/var/www/html -p 9000:9000 -d php:7.1-fpm 13c7c2dc2927054027c1f834cf4f9c2dfbb6781cf796a65c86560c86f7551bf5

    ##各项参数说明 1.--name 为容器命名为change-php 2.-v 挂载文件,这里是把当前宿主机的目录 挂载到容器的项目目录上 3.-p 端口 9000:9000 代表把宿主机的端口映射到容器的9000端口 4.-d后台守护进程 php后面的冒号:版本号

    查看运行情况

    MacbookdeMacBook-Pro:~ macbookpro$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 13c7c2dc2927 php:7.1-fpm "docker-php-entrypoi…" 3 seconds ago Up 2 seconds 0.0.0.0:9000->9000/tcp change-php

    当STATUS 为Up的时候才算启动成功 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 创建nginx容器 MacbookdeMacBook-Pro:~ macbookpro$ docker run -d --name change-nginx -p 666:80 -v /Users/macbookpro/Desktop/test_docker/html:/var/www/html -v /Users/macbookpro/Desktop/test_docker/conf.d:/etc/nginx/conf.d --link change-php:change-php nginx 23a73e0d25d796bae925f19a5dc7de346e09e75f368386e218a61ed3b8e0f188

    ##各项参数说明 1.--name 为容器命名为change-nginx 2.-v 挂载文件,这里是把当前宿主机的目录 挂载到容器的项目目录上 3.-p 端口 666:80 代表把宿主机的666端口映射到容器的80端口 4.--link 代表把nginx容器和php-fpm容器 相关联 一般是 (--link php容器名:新命名) 5.-d后台守护进程 MacbookdeMacBook-Pro:~ macbookpro$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 23a73e0d25d7 nginx "nginx -g 'daemon of…" 9 seconds ago Up 7 seconds 0.0.0.0:666->80/tcp change-nginx 当STATUS 为Up的时候才算启动成功 1 2 3 4 5 6 7 8 9 10 11 12 13 重点说一下nginx的配置文件 1.需要把我们自定义的配置文件挂载到容器的配置文件上 2.基本需要改的是root目录和fastcgi_pass的地址 3.root目录:这个是自定义,没什么毛病

    4.fastcgi_pass地址:这个是重点, fastcgi_pass change-php:9000;

    一般由 php-fpm容器名:9000,这样组成 5.这个conf文件可以在宿主机上面创建好,然后拷贝到容器中的配置文件中,进行覆盖,下一点就说道如何进入容器和如何拷贝文件到容器中

    下面是例子 server { listen 80; server_name localhost;

    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;
    
    location / {
        root   /var/www/html;
        index  index.html index.htm index.php;
    }
    
    #error_page  404              /404.html;
    
    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /var/www/html;
    }
    
    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {
        #proxy_pass   http://127.0.0.1;
    #}
    
    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ \.php$ {
        root           /var/www/html;
        fastcgi_pass   change-php:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
    
    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    location ~ /\.ht {
        deny  all;
    }
    

    } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 进入nginx容器 进入容器很简单,命令如下 docker exec -it 容器名 /bin/bash

    只需要查出容器的id,如何查出容器id?以下第一列就是容器的id MacbookdeMacBook-Pro:~ macbookpro$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 23a73e0d25d7 nginx "nginx -g 'daemon of…" 9 seconds ago Up 7 seconds 0.0.0.0:666->80/tcp change-nginx

    进入之后 如下。 MacbookdeMacBook-Pro:~ macbookpro$ docker exec -it 23a73e0d25d7 /bin/bash root@23a73e0d25d7:/# ls bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var 1 2 3 4 5 6 7 8 9 10 11 12 拷贝文件到容器 也很简单 从主机复制到容器:docker cp 宿主机文件地址 容器id:容器文件地址

    从容器复制到主机:docker cp 容器id:容器文件地址 宿主机文件地址

    ##进入nginx容器可以查出配置文件,只需要覆盖这个default.conf root@23a73e0d25d7:/etc/nginx/conf.d# ls default.conf

    MacbookdeMacBook-Pro:~ macbookpro$ docker cp /Users/macbookpro/Desktop/test_docker/conf.d/default.conf 7701a00b6db4:/etc/nginx/conf.d/default.conf

    重启nginx docker exec进入容器之后,直接 service nginx reload就可以,不要重启容器 1 运行php文件 浏览器输入localhost:666/index.php

    2021-02-22 13:26:15
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
《Nginx 代理系统常用手册》 立即下载
CentOS Nginx PHP JAVA 多语言镜像使用手 立即下载
CentOS Nginx PHP JAVA多语言镜像使用手册 立即下载