我创建了两个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)有这个文件呀!!!!
首先创建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
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。