教你如何做出自己想要的PHP Docker镜像
之前有片文章讲过如何通过Docker来构建Laravel的开发环境,其实变通一下就能够在本地电脑上用Docker运行任何PHP项目,让任何PHP项目都能运行在Docker环境中主要是需要根据PHP项目的依赖制作PHP镜像的Dockerfile。这篇文章就主要讲一下如何根据需求制作PHP的Docker镜像文件。
1. 继承基础镜像
首先需要根据你的PHP项目对PHP的要求找到基础镜像,然后再在基础镜像的基础上按需安装PHP的扩展。在Dockerfile中使用FROM
命令指定基础镜像。
From <image>
FROM
指定构建镜像的基础源镜像,如果本地没有指定的镜像,则会自动从 Docker 的公共库 pull 镜像下来。FROM
必须是 Dockerfile 中非注释行的第一个指令,即一个 Dockerfile 从FROM
语句开始。
这里我们打算制作一个PHP7.2的包括FPM的定制化镜像,所以首先在Dockerfile中指定基础镜像:
FROM php:7.2-fpm
2. 安装PHP扩展
定制PHP镜像的主要工作就是安装各种PHP扩展,在Dockerfile中PHP镜像安装扩展有三种方法,每种方法都有它特定的使用场景,下面依次来说。
2.1安装dockerhub中php官方提供的扩展
在DockerHub中提供了一些官方的PHP扩展,可以通过docker-php-ext-install
脚本命令在Dockerfile中列出要安装的扩展,下面让我们的PHP镜像安装上常用的pdo
、pdo_mysql
、mcrypt
这些扩展。
FROM php:7.2-fpm
RUN docker-php-ext-install pdo pdo_mysql mcrypt zip gd pcntl opcache bcmath
如果你需要对扩展指定一些自定义的编译参数的话,docker提供了另外一个有用的脚本docker-php-ext-configure
来传递编译参数(一般情况下用不到)。
FROM php:7.2-fpm
RUN docker-php-ext-install pdo pdo_mysql mcrypt zip pcntl opcache bcmath\&& 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
2.2 使用PECL安装扩展
DockerHub上只是提供了一部分PHP的扩展,安装这些以外的扩展仍然需要PECL
, 在Docker镜像中使用pecl install
下载、编译、安装扩展然后使用docker-php-ext-enable
下面使用PECL
安装了PHP
的redis
还有grpc
扩展。
RUN pecl install grpc \&& docker-php-ext-enable grpc \&& pecl install -o -f redis \&& docker-php-ext-enable redis \&& rm -rf /tmp/pear
2.3 源码安装扩展
有些扩展即无法使用docker-php-ext-install
安装也无法通过PECL
安装,只能通过源码编译安装(PHP扩展型的框架Phalcon就是这样,不过设置比较复杂,以后再讲), 在Docker中同样能够通过源码安装PHP扩展
RUN curl -fsSL 'https://xcache.lighttpd.net/pub/Releases/3.2.0/xcache-3.2.0.tar.gz' -o xcache.tar.gz \&& mkdir -p /tmp/xcache \&& tar -xf xcache.tar.gz -C /tmp/xcache --strip-components=1 \&& rm xcache.tar.gz \&& docker-php-ext-configure /tmp/xcache --enable-xcache \&& docker-php-ext-install /tmp/xcache \&& rm -r /tmp/xcache
讲在最后
文章重点讲了一下Docker中怎么安装PHP的扩展,其实还有其他很多与Docker相关的概念需要了解才能制作出自己需要的镜像文件,好在Docker官方教程里有详细的讲解,感兴趣的一定要按照教程的步骤自己实践一下。
现在服务的业务组织里服务端开发语言主要用Go,PHP更多的是一些老系统、管理后台或者活动类系统在用,最近两个月我写过的PHP代码数都能数过来,更多的时间还是在写Go代码。所以最近写的关于PHP类的技术文章也很少,之后有时间了会写如何在Docker里安装和配置Phalcon。
教你如何做出自己想要的PHP Docker镜像相关推荐
- 教你如何做出有创意的作品
我们都知道创新对于一个设计师是多么重要的一件事,一个成功的设计作品可能往往就是那灵光一闪的创意.千锋教你如何做出有创意的作品.(来源:千锋UI) 我们想创意,要去生活中寻找灵感.越贴近生活越好,而不是 ...
- 互联网高手教你如何搜集你想要的信息
互联网高手教你如何搜集你想要的信息 写在前面 几个月前,团队邀我做次内部的分享,主题是如何有效搜索信息.这是因为平时工作中,我经常会分享一些专业学习文档,而这些文档的出现往往很及时,回应一些我们自己项 ...
- 乔布斯的3个工作技巧:教你如何得到自己想要的
史蒂夫乔布斯不仅仅创建了当代最有价值的两家公司,更重要的是,他给商业世界带来的影响力. 无论是创建苹果公司,还是之后的皮克斯公司,起步之时,乔布斯都面临过许多障碍.但是乔布斯用他自己的方式创造了属于自 ...
- 【Linux】22.当前运行的docker修改环境后,想在本地保存为镜像的方法
当前运行的docker修改环境后,想在本地保存为镜像的方法 docker images 查看所有镜像 docker ps # 查看当前运行的镜像 docker commit -m="123& ...
- 【docker】查看docker镜像的版本号TAG,从远程仓库拉取自己想要版本的镜像
[docker]查看docker镜像的版本号TAG,从远程仓库拉取自己想要版本的镜像
- 教你如何做出想要的PHPDocker镜像
之前有篇文章讲过如何通过Docker来构建Laravel的开发环境,其实变通一下就能够在本地电脑上用Docker运行任何PHP项目,让任何PHP项目都能运行在Docker环境中主要是需要根据PHP项目 ...
- 他是“创业教父”,做出4家上市公司,秘诀6个字:找俗人,打呆仗!
来 源:和牛财经 作 者:穆清 作为"携程"四君子之一的季琦,在前十余年的创业生涯中,先后创办携程.如家.汉庭三家市值超过百亿的上市公司,被誉为"创业教父". ...
- 《北大学霸教你快速学会你想学的任何知识》笔记
一个前提:学会提问 两组概念:知识的分类,认知的分层 三个技能:思维过滤 + 个性笔记 + 高效记忆 四步提升:知识体系 + 学习迁移 + 元认知能力 + 知觉学习 一.学会提问 成为学霸的一个前提: ...
- 抖音短视频怎么制作?简单几步教你轻松做出火爆抖音的效果!
抖音短视频怎么制作?如何制作一款火爆的抖音短视频?其实现在抖音上最火的还是那种把图片做成视频的形式.很多获得百万赞的视频都是那种由多张图片做成的小视频形式.而且还带有特色的切换效果,看起来十分有趣并且 ...
最新文章
- Linux的ELF格式分析
- 2.7 程序示例--多分类问题-机器学习笔记-斯坦福吴恩达教授
- 中科院sci分区表_最新 | 2020中科院SCI分区表 食品科技类
- jQuery事件4——hover
- 上传文件Base64格式(React)
- C++ vector用法
- FortiGuard 实验室报告:全球受攻击的IoT设备呈指数级增长
- 怪盗基德的滑翔翼(信息学奥赛一本通-T286)
- MySQL sql trace的使用
- 数据库 外键 优缺点_不同数据格式的优缺点:键值与元组
- mac苹果ping不通网络
- 数据库原理及应用教程(第4版|微课版)陈志泊-第一章习题
- 编程猫的python咋样_编程猫的课程怎么样?
- 【Java系列】:异常-Exception
- 回顾展望:杀毒软件的“前世今生”
- 后付费和账单分期真的可以缓解经济压力么
- python定义整数_Python | 程序定义一个整数值并打印
- 如何利用手机作为电脑的麦克风
- 基于艾宾浩斯遗忘曲线的APP(大学毕业设计)
- 海思[hi3531]编译环境搭建(针对用于编译程序不制作内核和系统的开发者)