docker php和nginx的通信

随笔3个月前发布 木石说
37 0 0

阅读目录

1 创建桥接网络2 安装nginx3 安装php容器4 配置nginx容器的default.conf文件5 参考

回到顶部↑

1 创建桥接网络

docker network create phpClassExamples_network

回到顶部↑

2 安装nginx

2.1 生成nginx临时容器

 docker run -it --name test_nginx  -d nginx

查看临时容器内部,找到关键目录

1、工作目录:

ls usr/share/nginx/html

docker php和nginx的通信

 2、配置目录

ls etc/nginx/conf.d

docker php和nginx的通信

3、日志目录

ls var/log/nginx

docker php和nginx的通信

 2.2 复制nginx关键目录

退出临时容器。创建宿主机目录

cd /  ; 
mkdir myweb2 ; 
cd myweb2  ;
mkdir {html,nginx,log,php} ; 
cd nginx  ; 
mkdir conf.d ; 
cd /myweb2/php ;  
mkdir conf ; 
cd /myweb2/log ; 
mkdir nginx; 

 

查看创建的目录结构

tree /myweb2

docker php和nginx的通信

 

复制重要文件到宿主机

docker cp test_nginx:/usr/share/nginx/html /myweb2 
docker cp test_nginx:/etc/nginx/conf.d /myweb2/nginx

如果不复制出来,配置文件会丢失 造成无法启动

然后卸磨杀驴,把这个测试容器删除

docker stop test_nginx
docker rm test_nginx

2.3 生成真正的nginx容器:phpClassicExamples_nginx

docker run  
--network phpClassExamples_network  
-p 8080:80 
-p 443:443 
--name phpClassicExamples_nginx  
--restart=always  
-v /myweb2/html:/usr/share/nginx/html 
-v /myweb2/nginx/conf.d:/etc/nginx/conf.d 
-v /myweb2/log/nginx:/var/log/nginx 
-d nginx:latest

备注:–restart=always 重启自动启动容器
8080 是宿主机端口;80是容器端口
443 用于https端口
容器名为 :phpClassicExamples_nginx

安装完即可访问静态网页

docker php和nginx的通信

 

回到顶部↑

3 安装php容器

3.1 生成php临时容器

docker run -dit  --name test_php  php:7.4-fpm 

查看临时容器内部,找到关键目录

/usr/loacl/etc  配置文件夹
/var/www/html 工作目录

docker php和nginx的通信

3.2 复制php关键目录

 把配置文件夹里的文件复制到宿主机目录  /myweb2/php/conf

docker cp test_php:/usr/local/etc /myweb2/php/conf

docker php和nginx的通信

3.3 删除临时php容器

docker stop test_php
docker rm test_php

3.4 生成真正的php容器

docker run  
--network phpClassExamples_network  
-p 9001:9000  
-itd --name phpClassicExamples_php 
-v /myweb2/html:/var/www/html  
-v /myweb2/php/conf:/usr/loacl/etc 
--restart=always  
php:7.4-fpm

3.5 安装php扩展

进入php容器

docker exec -it phpClassicExamples_php bash

安装扩展

docker-php-ext-install pdo pdo_mysql 

3.6 简单配置

进入容器

locale 

docker php和nginx的通信

export LANG=en_US.UTF-8

docker php和nginx的通信

 

编辑PHP.ini文件,设定默认字符集:
default_charset = “UTF-8”

回到顶部↑

4 配置nginx容器的default.conf文件

修改宿主机 /myweb2/nginx/conf.ddefault.conf文件 ,

docker php和nginx的通信

 

docker php和nginx的通信

 

docker php和nginx的通信

 完整代码如下

docker php和nginx的通信docker php和nginx的通信

server {
    listen       80; # 宿主机的端口
    listen  [::]:80;
    #server_name  localhost;
    server_name 10.10.10.234 # 改成宿主机的ip
    #charset koi8-r;
    # 解决中文乱码
    charset utf-8;
    # 解决中文路径乱码
    source_charset utf-8;#实际并没有用
    #access_log  /var/log/nginx/host.access.log  main;

    

    location / {
        root   /usr/share/nginx/html;# nginx容器的工作目录(绝对路径)
        # index  index.html index.htm;
        # 将中文路径转换为utf-8编码
        # try_files $uri $uri/ /index.html?$args;
        
        # 以下三行为显示目录,相当于apache中的indexes
        autoindex on; # 开启目录浏览功能;
        autoindex_exact_size off; #关闭详细文件大小统计,让文件大小显示MB,GB单位,默认为b;
        autoindex_localtime on; #开启以服务器本地时区显示文件修改日期!

    }



    #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   /usr/share/nginx/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           html;
    #    fastcgi_pass   127.0.0.1:9000;
    #    fastcgi_index  index.php;
    #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
    #    include        fastcgi_params;
    #}

    # 与php-fpm通信的关键设置
    location ~ .php$ {
            root           /var/www/html;    #php容器工作目录
            fastcgi_pass   phpClassicExamples_php:9000;
            fastcgi_index  index.php;
            #fastcgi_param  SCRIPT_FILENAME /scripts$fastcgi_script_name;
            fastcgi_param  SCRIPT_FILENAME /var/www/html$fastcgi_script_name;  #改成php容器的工作目录
            include        fastcgi_params;
     }

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /.ht {
    #    deny  all;
    #}
}

default.conf

 

然后重启nginx服务器

docker restart phpClassicExamples_nginx phpClassicExamples_php

 

回到顶部↑

5 参考

搭建php环境(踩坑经验!!)
docker搭建nginx、php、mysql等常用环境

基于Docker的Nginx部署教程_nginx使用docker部署应用,查漏补缺

© 版权声明

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...