CentOS7 使用docker部署Nginx+PHP环境

  1. 下载nginx和php镜像

    $ docker pull php
    $ docker pull nginx
    
  2. 创建 Dockerfile文件, Dockerfile是由一系列命令和参数构成的脚本,这些命令应用于基础镜像并最终创建一个新的镜像 (个人创建在/var/lib/docker的phpdockerfile目录下)

    $ mkdir phpdockerfile
    $ cd phpdockerfile
    $ touch Dockerfile
    

    Dockerfile文件中写入以下代码

    FROM php:5.6-fpm
    
    RUN apt-get update && apt-get install -y \
            libfreetype6-dev \
            libjpeg62-turbo-dev \
            libmcrypt-dev \
            libpng-dev \
        && docker-php-ext-install -j$(nproc) iconv mcrypt \
        && docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
        && docker-php-ext-install -j$(nproc) gd
    
    RUN docker-php-ext-install mbstring
    
    RUN docker-php-ext-install mysqli
    
    RUN docker-php-ext-install pdo && docker-php-ext-install pdo_mysql 
    

    创建镜像,**pdophp 代表新镜像名可自定义,. **代表当前目录 docker自动去找Dockerfile文件

    $ docker build -t pdophp .

  3. 根据创建的pdophp镜像,建立容器互连php与nginx,并建立文件映射

    // myphp1 容器名(可自定义)
    // bridge 网络组名称(可通过docker network ls命令查找已有网络组名称)
    // /Users/xxx/Works/web/工作目录(可自定义)
    // --name 容器命名
    // -v 设置挂载目录
    docker run --name myphp1 --net bridge -v /Users/xxx/Works/web/:/var/www/html/ --privileged=true -d pdophp
    
    // mynginx1 容器名(可自定义)
    // bridge 网络组名称(可通过docker network ls命令查找已有网络组名称)
    // /Users/xxx/Works/web 工作目录(可自定义)
    // /Users/xxx/Works/docker/nginx/conf.d/ nginx配置文件(可自定义)
    // --name 容器命名
    // -p 设置映射端口
    // -v 设置挂载目录
    docker run --name mynginx1  -p 80:80 --net workend  -v /Users/xxx/Works/web:/usr/share/nginx/html -v /Users/xxx/Works/docker/nginx/conf.d/:/etc/nginx/conf.d --privileged=true -d nginx 
    

    查找网络组名称

    docker network ls
    在这里插入图片描述

  4. 查看容器运行情况

    $ docker ps -a 查看所有容器

    $ docker ps 查看正在运行的容器

    在这里插入图片描述

  5. 建立nginx配置文件

    首先注意上一步中myphp1的端口为9000

    在**/Users/xxx/Works/docker/nginx/conf.d/下创建default.conf**

    当前使用thinkphp的配置举例

    server {
            listen       80;
            server_name  域名或ip;
    	root        /var/www/html/think-5.1/public;
    
    
            location / {
                index  index.html index.htm index.php;
    	       try_files $uri $uri/ /index.php?$query_string;
                autoindex  off;
            }
            location ~ \.php(.*)$ {
                fastcgi_pass   myphp1:9000;
                fastcgi_index  index.php;
                fastcgi_split_path_info  ^((?U).+\.php)(/?.+)$;          
    	       fastcgi_param  SCRIPT_FILENAME $document_root/$fastcgi_script_name;
                fastcgi_param  PATH_INFO  $fastcgi_path_info;
                fastcgi_param  PATH_TRANSLATED  $document_root$fastcgi_path_info;
                include        fastcgi_params;
            }
    }
    

    重启mynginx1

    docker restart mynginx1

    注意:如果发现无法正常启动mynginx1,可能是fastcgi_pass myphp1:9000; 中的myphp1的问题

    可使用命令获取ip进行替换

    docker inspect --format='{{.NetworkSettings.IPAddress}}' myphp1
    
  6. 在**/Users/xxx/Works/web/** 目录下上传thinkphp代码即可

参考:https://my.oschina.net/u/210357/blog/1186820

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值