前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >教你如何做出想要的PHPDocker镜像

教你如何做出想要的PHPDocker镜像

作者头像
KevinYan
发布2019-10-13 17:26:26
1.1K0
发布2019-10-13 17:26:26
举报
文章被收录于专栏:网管叨bi叨

之前有篇文章讲过如何通过Docker来构建Laravel的开发环境,其实变通一下就能够在本地电脑上用Docker运行任何PHP项目,让任何PHP项目都能运行在Docker环境中主要是需要根据PHP项目的依赖制作PHP镜像的Dockerfile。这篇文章就主要讲一下如何根据需求制作PHP的Docker镜像文件。

1. 继承基础镜像

首先需要根据你的PHP项目对PHP的要求找到基础镜像,然后再在基础镜像的基础上按需安装PHP的扩展。在Dockerfile中使用 FROM命令指定基础镜像。

代码语言:javascript
复制
From <image>
  • FROM 指定构建镜像的基础源镜像,如果本地没有指定的镜像,则会自动从 Docker 的公共库 pull 镜像下来。
  • FROM 必须是 Dockerfile 中非注释行的第一个指令,即一个 Dockerfile 从 FROM 语句开始。

这里我们打算制作一个PHP7.2的包括FPM的定制化镜像,所以首先在Dockerfile中指定基础镜像:

代码语言:javascript
复制
FROM php:7.2-fpm

2. 安装PHP扩展

定制PHP镜像的主要工作就是安装各种PHP扩展,在Dockerfile中PHP镜像安装扩展有三种方法,每种方法都有它特定的使用场景,下面依次来说。

2.1安装dockerhub中php官方提供的扩展

在DockerHub中提供了一些官方的PHP扩展,可以通过 docker-php-ext-install脚本命令在Dockerfile中列出要安装的扩展,下面让我们的PHP镜像安装上常用的 pdopdo_mysqlmcrypt这些扩展。

代码语言:javascript
复制
FROM php:7.2-fpmRUN docker-php-ext-install pdo pdo_mysql mcrypt zip gd pcntl opcache bcmath

如果你需要对扩展指定一些自定义的编译参数的话,docker提供了另外一个有用的脚本 docker-php-ext-configure来传递编译参数(一般情况下用不到)。

代码语言:javascript
复制
FROM php:7.2-fpmRUN 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安装了 PHPredis还有 grpc扩展。

代码语言:javascript
复制
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扩展

代码语言:javascript
复制
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。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-09-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 网管叨bi叨 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 继承基础镜像
  • 2. 安装PHP扩展
    • 2.1安装dockerhub中php官方提供的扩展
      • 2.2 使用PECL安装扩展
        • 2.3 源码安装扩展
        • 讲在最后
        相关产品与服务
        容器镜像服务
        容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档