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

薄洪涛4年前Linux1157

切换到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

相关文章

git默认用户名及密码

服务器设置默认全局git用户名/密码cd ~ vi .git-credentials https://{username}:{password}@git.coding.net gi...

负载均衡配置ssl证书的坑

负载均衡配置ssl证书的坑

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

centos上为php安装扩展

今天做了一个查询心跳数据的功能,相关的数据放在redis里面,我才用了yii框架链接redis的时候,线上服务器报Class yii\redis\Connection does not exist造成...

时区转换的问题--解决篇

时区转换的问题--解决篇

事情是这样的,我最近做一套DNS服务器的解析的脚本,其中DNS服务器上有一条命令是这样的 [root@qip1200 ~]# date Thu Oct ...

高负载均衡haproxy的搭建

高负载均衡haproxy的搭建

目的:做负载均衡步骤:做两台nginx服务器,一台haproxy转发器首先安装nginx1.安装相关的依赖包。yum install gcc -c++ yum ...

xshell做端口映射链接数据库

xshell做端口映射链接数据库

有些时候,公司的一些线上的数据库,数据太多,不适合复制到本地然后搭建本地数据库开发,直接链接数据库又不安全所以,需要通过xshell做端口转发,通过隧道来链接数据库1、首先通过xshell登陆跳板机2...

发表评论    

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