mac下使用docker来构建不同版本的php环境并安装扩展

薄洪涛4年前Linux1345

切换到mac后,我目前php环境是php7.3 ,但是一些老项目需要7.1 甚至5.6 的环境,特别是服务器上也有这种问题,所以我决定使用docker来部署不同的项目

首先安装docker

brew cask install docker

安装php7.1

php:7.1.30-fpm

运行容器,指定项目的名字,路径,端口等

docker run --name php7 -p 9071:9000 -v /Users/boht/chocwell/docker:/www  -d php:7.1.30-fpm

这里说下,是将9000端口映射到物理机的9071上,将物理机上/users/boht/chocwell/docker挂在到docker容器的/www上

然后我的nginx是没有用docker的,直接安装在物理机上的,可以通过监听不同的端口来实现交给不同的php来处理,示例配置如下

server {
    charset utf-8;
    client_max_body_size 128M;
    server_name www.docker.com
    listen 80; ## listen for ipv4
    root        /www;
    index       index.php;

    access_log      /Users/boht/chocwell/logs/docker-access.log;
    error_log       /Users/boht/chocwell/logs/docker-error.log;


    location / {
        # Redirect everything that isn't a real file to index.php
        try_files $uri $uri/ /index.php?$args;
    }


    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_pass 127.0.0.1:9071;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
        include fastcgi_params;
    }
    location ~ /\.(ht|svn|git) {
        deny all;
    }
}

到此为止,我们已经切换到php7.1环境了


现在我们已经搭建好了基本的php环境,还需要安装一些扩展,先查看下容器的id

boht@mac dnmp-master % docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
f7631c430d23        php:7.1.30-fpm      "docker-php-entrypoi…"   6 hours ago         Up 6 hours          0.0.0.0:9071->9000/tcp   php7

我们首先进入到容器里面

 docker exec -it f7631c430d23 bash

进入到 /usr/local/bin/ 目录下

cd /usr/local/bin/

以安装mysql扩展为例

./docker-php-ext-install pdo_mysql

然后重启容器

docker restart f7631c430d23

bingo~

标签: docker

相关文章

PHP调用不起来Python脚本

前几天做了个自动处理文件的python脚本,目前python脚本需要手动把文件放到特定文件夹下,自动去读取处理;但是老大觉得不方便,让我写了个文件上传页面,然后调用python的脚本,导出处理后的文件...

前后端分离如何实现用户身份认证及鉴权?

前后端分离如何实现用户身份认证及鉴权?

假设我们不适用前后端分离,那么登录成功之后,我们会把用户的信息存储到session中,之后的每一次请求,都会带着cookies中的session_id,服务端会自行验证此用户是否登录及登录是否失效,那...

linux下mysql报错Access denied for user 'root'@'%

开发机器用的linux,但是装好mysql用navicat链接的时候,会报错Access denied for user 'root'@'%,命令mysql -u root也是...

nginx正向代理与反向代理

nginx正向代理与反向代理

正向代理正向代理是一个位于客户端和原始服务器之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。浏览器中输...

chmod引出的问题

chmod引出的问题

上传代码后,尝试访问出现如下错误先尝试对文件修改权限[root@host wechat.bohongtao.online]# chmod -R 755 ...

负载均衡配置ssl证书的坑

负载均衡配置ssl证书的坑

上周的时候,公司有个域名需要配置下ssl证书,所以这个艰巨的任务落在我的头上,开始的时候,觉得没啥啊,就配个证书而已,分分钟的事儿于是开始配置了步骤如下:合并证书文件负载均衡器导入ssl证书,配置ac...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。