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

薄洪涛4年前Linux899

切换到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上传代码到github的时候,通常我们使用的编辑器(比如phpstorm等)会产生一些配置文件(.idea等),或者一些项目的配置信息,比如数据库信息;我们是不希望提交这些文件的;所以要用...

nginx转换post请求为get

nginx转换post请求为get

今天调银联收银台回调的时候,遇到一件特别坑的事情,我通过银联付款后,本来应该跳转到我自己定义的回调页面,但是每次都会返回405错误码,很是恼火;查了下日志2019/06/24 14:58:3...

服务器:swap告警,系统异常报错

服务器:swap告警,系统异常报错

登陆自己的小服务器,用composer下载个东西,一直报killed[root@host voyager]# composer require tcg/voya...

如何让命令在关闭终端后继续执行

我们在执行一些比较耗时的脚本的时候,必须要保持终端在线,如果电脑休眠了任务就直接被杀死了这时候我们可以用来执行命令,就会在后台自动执行 nohup 命令 &...

linux免密登陆

linux免密登陆

最近有些累,所以今天的教程就水一篇;所谓免密登陆,就是说我有一台服务器,不想让人家知道具体的ip或者用户名密码,只让使用者从跳板机登陆,通过ssh xxx@ip  这种来登陆;1、 首先跳板...

实现SVN自动化部署

实现SVN自动化部署

当我们修改程序并通过SVN上传到服务器后,我们想立马刷新页面看到更改之后的效果,这时候就要用到SVN自动化部署了,所谓的自动化部署,就是当SVN提交后自动更新文件到项目目录现在我们从头来部署一遍,看到...

发表评论    

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