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

薄洪涛4年前Linux1497

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

相关文章

xshell做端口映射链接数据库

xshell做端口映射链接数据库

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

安装完宝塔后shadowsocks不能使用

安装完宝塔后shadowsocks不能使用

问题描述:近期买了个搬瓦工的服务器,配置了shadowsocks,可是FQ访问Google,速度还不错(看1080p视频还是可以的),然后想着安装宝塔来管理服务器,便于以后部署网站什么的,当安装完宝塔...

nginx转发配置

帮同事搭建博客,选用的是ghost博客后台,这是基于nodejs的一套cms系统,然后需要用nginx去转发,顺便总价下nginx的转发方式及规则server_name  域名;...

secure造成的循环登录

secure造成的循环登录

在安装nextcloud和ZenTao时,出现循环登录现象,就是输入用户名和密码之后会再次跳转到登录页,开始怀疑是session权限问题,将session的保存路径权限设置为777后,问题依旧,而且,...

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

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

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

Nginx解决跨域问题

不解释,做个记录location / {     add_header Access-Control-Allow-Origin&n...

发表评论    

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