Docker 搭建PHP开发环境

本文详细指导如何使用Docker快速构建PHP开发环境,包括拉取镜像、创建网络、启动容器并配置Nginx,同时介绍如何安装PHP扩展如PDO_MYSQL和Redis。了解Docker在开发效率和一致性方面的优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. Docker 简介

Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机)、 bare metal、OpenStack 集群和其他的基础应用平台。

2. 为什么要使用docker

作为一种新兴的虚拟化方式,Docker 跟传统的虚拟化方式相比具有众多的优势。

  1. 更高效的利用系统资源
  2. 更快速的启动时间
  3. 一致的运行环境
  4. 持续交付和部署
  5. 更轻松的迁移
  6. 更轻松的维护和扩展
  7. 对比传统虚拟机总结
特性容器虚拟机
启动秒级分钟级
硬盘使用一般为 MB一般为 GB
性能接近原生弱于
系统支持量单机支持上千个容器一般几十个

3. Docker 搭建PHP开发环境

3.1 拉取镜像

docker pull php:5.6-fpm
docker pull nginx
docker pull redis

3.2 创建网络

docker network create -d bridge php-net

3.3 启动容器

#启动redis
docker run --name redis-web -d --network php-net -p 6380:6379 redis  
#启动php容器  
docker run --name php-web -d --network php-net -p 9001:9000 -v {本机项目路径}:/var/www/html  php:5.6-fpm  
#启动nginx 容器 
docker run --name nginx-web -d --network php-net -p 80:80 -v /Users/macbook/Desktop/docker/nginx/www:/usr/share/nginx/html -v /Users/macbook/Desktop/docker/nginx/conf:/etc/nginx/conf.d  nginx  
#其中 
#/Users/macbook/Desktop/docker/nginx/www 为本机项目路径
#/Users/macbook/Desktop/docker/nginx/conf 为nginx 配置配置文件夹 

3.4 修改 nginx 配置文件

server {
    listen       80;
    listen  [::]:80;
    server_name  localhost;

    #access_log  /var/log/nginx/host.access.log  main;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }

    #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$ {
        fastcgi_pass   172.18.0.3:9000; # PHP容器的 域名和端口
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /var/www/html$fastcgi_script_name;  # PHP容器的项目路径
        fastcgi_param  PATH_INFO $1; # TP需要path_info
        include        fastcgi_params; 
    }

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


3.5 安装PHP扩展

docker exec -it php-web bash
cd /usr/local/bin  
./docker-php-ext-install pdo_mysql  
./docker-php-ext-install mysql // php7以上需要mysqli 取消了mysql 扩展
./docker-php-ext-install bcmath
./docker-php-ext-install mbstring

#相关依赖安装
apt-get update && apt-get install -y libfreetype6-dev libjpeg62-turbo-dev libmcrypt-dev libpng-dev
docker-php-ext-install -j$(nproc) iconv
docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/

docker-php-ext-install -j$(nproc) gd



apt-get install -y --no-install-recommends libgmp-dev && \
rm -r /var/lib/apt/lists/* && \
docker-php-ext-install -j$(nproc) gmp

1.curl -L -o /tmp/redis.tar.gz https://github.com/phpredis/phpredis/archive/3.1.3.tar.gz
2.tar xfz /tmp/redis.tar.gz
3.rm -r /tmp/redis.tar.gz
4.mkdir -p /usr/src/php/ext
5.mv phpredis-3.1.3 /usr/src/php/ext/redi
6.docker-php-ext-install redis

Amqp:
1.apt-get install librabbitmq-dev
2.pecl install amqp
3.docker-php-ext-enable amqp

扩展参考文章

1. https://www.cnblogs.com/yinguohai/p/11329273.html
2. redis : https://www.cnblogs.com/wyaokai/p/11904701.html
3. redis: https://www.cnblogs.com/louis6575/p/12543517.html
4. gmp : https://blog.csdn.net/weixin_43992002/article/details/118415485

4. 补充

4.1 可能用到的 shell 命令

lsof -i :9001  #查看端口占用情况
service nginx reload #重启nginx 容器

4.2可能用到的 docker 命令

#复制本地文件到docker 容器
docker cp /Users/macbook/Desktop/docker/nginx/conf/default.conf nginx-web:/etc/nginx/conf.d/default.conf  
# 进入容器
docker exec -it cb6c1fe83bff(php容器ID) bash
#stop停止所有容器
docker stop $(docker ps -a -q) 
#查看已经下载的镜像
docker image ls 
#删除容器
docker rm {容器ID} 
#删除镜像
docker rmi {imageID}  
#查看容器信息
docker inspect php01 
#一次启动 nginx php redis容器(ps:推荐做法为为该命令取别名,更方便操作)
docker start nginx-web php-web php-web-73 php-web-80 redis-web
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值