docker第六期 实战 使用Dockerfile 构建属于自己的php环境

  1. 大家可能会在开发中遇到这个问题,当我们从docker-hub上拉取一个php镜像下来时,发现很多拓展都没有,导致无法很好为我所用,这个时候我们就可以自定义 Dockerfile,创建一个属于我们自己的一个镜像。接下来就来讲讲它的构建过程。
  2. 环境
  3. php 7.4
  4. composer 依赖管理工具
  5. 需要的拓展
  6. swoole
  7. redis
  8. mongodb
  9. xmlwriter
  10. 安装拓展需要的命令
  11. docker-php-source
  12. 格式:
  13. docker-php-source extract | delete
  14. 参数说明:
  15. extract:创建并初始化/usr/src/php 目录
  16. delete: 删除 /usr/src/php 目录
  17. root@VM-8-11-ubuntu:/home/docker# docker run —name=myphp01 -it myphp:1.0 /bin/sh
  18. # cd /usr/src
  19. # ls
  20. php.tar.xz php.tar.xz.asc
  21. # docker-php-source extract
  22. # ls
  23. php php.tar.xz php.tar.xz.asc
  24. 注意:php容器默认是不会生成这个文件目录的。需要执行这个命令生成
  25. docker-php-ext-install
  26. 格式:
  27. docker-php-ext-install “源码包目录名”
  28. 注意点:
  29. 1. “源码包”需要放在 /usr/src/php/ext 目录下
  30. 2. 默认情况下,PHP容器没有/usr/src/php 这个目录,需要使用 docker-php-source extract 来生成
  31. 3. 卸载扩展,直接删除 /usr/local/etc/php/conf.d对应的配置文件即可。
  32. 4. 可以直接使用pecl安装的就直接使用pecl安装
  33. docker-php-ext-enable
  34. 用来启动扩展的。
  35. 格式:
  36. docker-php-ext-enable 扩展名

docker-php-ext-configure 一般都是需要跟docker-php-ext-install搭配使用,它的作用是,当你安装扩展时,需要自定义配置时,就可以使用它来帮你做到。 构建 属于自己的PHP-Dockerfile 文件

  1. FROM php:7.4
  2. MAINTAINER docker_user docker_user@email.com
  3. ENV TZ=Asia/Shanghai
  4. RUN apt-get update && apt-get install -y \
  5. no-install-recommends libfreetype6-dev libjpeg62-turbo-dev libpng-dev curl \
  6. && apt-get install zlib1g-dev
  7. RUN pecl install mongodb \
  8. && pecl install redis \
  9. && pecl install swoole \
  10. && pecl install xlswriter \
  11. && docker-php-ext-enable mongodb redis swoole xlswriter
  12. RUN curl -o /usr/bin/composer https://mirrors.aliyun.com/composer/composer.phar \
  13. && chmod +x /usr/bin/composer
  14. ENV COMPOSER_HOME=/tmp/composer

查看执行

  1. 执行构建命令 docker build -t myphp:1.0 .
  2. docker run name=myphp -it myphp:1.0 /bin/sh 进入容器
  3. php -m 查看php扩展
  4. composer -v 查看composer

我们可以看到这四个扩展和Composer已经安装上去了,所以之后我们还想装什么扩展,就可以按照这个方式装上去。构建自己专属的php环境啦。