docker搭建php环境

前言

本文主要参考:https://www.zhihao1.cn/91.html

主要介绍docker搭建php,docker安装使用请自查

docker拉取nginx和php镜像

docker pull nginx:latest 这里我直接拉最新版的niginx latest(最新版本)

docker pull php:7.4-fpm php我们就拉php7.4版本的fpm就好了

使用docker images查看已安装的镜像

创建容器

  1. 先创建ngix文件夹存放等会php文件要挂载的目录,我创建在/docker/nginx/www/myphp目录的
    1. 命令
      mkdir -p /docker/nginx/www/myphp (-p代表递归创建,按目录层级创建目录)
  2. 创建容器:docker run –name myphp -v /docker/nginx/www/myphp:/www/myphp -d c5fdabeef32a创建运行php的容器,名为myphp
    1. -v代表挂载目录,将服务器外面的目录与创建的容器里的目录进行挂载,以后修改代码直接在容器外的服务器目录就可以修改了
    2. -d代表后台运行
    3. c5fdabeef32a代表php-fpm的镜像id,可通过docker images进行查看安装的镜像
  3. 查看刚才运行的容器,通过 docker ps查看

  4. 创建conf、conf.d目录 mkdir -p /docker/nginx/conf/conf.d,一定要用mkdir -p递归创建目录,即使上级目录不存在,会按目录层级自动创建目录
  5. 创建自己的conf文件,可以自己命名

    vim myphp.conf

    erver {
        listen       80;
        server_name  localhost; #这里修改成自己的域名,我这里是本地运行所以填的localhost
        location / {
            root   /usr/share/nginx/html;
            index  index.html index.htm index.php;
        }
    
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /usr/share/nginx/html;
        }
    
      #当请求网站下php文件的时候,反向代理到php-fpm
        location ~ \.php$ {
            fastcgi_pass   php:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /www/myphp/$fastcgi_script_name;
            include        fastcgi_params;
        }
    }
    
    

    关于配置文件,这篇文章说的很详细:https://www.cnblogs.com/donghui521/p/10334776.html

  6. 创建运行nginx的容器,打通nginx与php容器之间的关联
    docker run --name nginx1 -p 8088:80 -d \
    -v /docker/nginx/www:/usr/share/nginx/html \
    -v /docker/nginx/conf/conf.d:/etc/nginx/conf.d \
    --link myphp:php nginx
    
    -p 主机和容器端口互联,主机8088:80
    -v 目录挂载
    -d 后台运行
    --link nginx和php容器互联
  7. 如果我们想进一步的修改nginx配置。
    1. 通过docker exec -it mynginx /bin/bash进入容器
    2. vim /etc/nginx/nginx.conf 编辑配置文件
    # 如果没有vim,通过下面的命令进行安装vim
    apt-get update		#更新包管理
    apt-get install vim -y   #安装vim

在这里插入图片描述

测试

在我们之前创建的/docker/nginx/www/myphp文件夹中创建一个index.php

<?php
echo phpinfo();
?>

访问
访问