PhpStorm Docker环境下的单元测试(PHPUnit)

一、说明

项目需要,还在多版本php开发,本文主要讲述PhpStorm开发环境下的PHPUnit配合Docker镜像,本地调试代码。

二、准备

注:
php7.x使用redis5.x、yaf3.x、phpunit6.5.14
php5.6使用redis3.x、yaf2.x、phpunit5.7.27

三、制作镜像

  1. PhpStorm运行的是docker镜像而非容器,所以这里需要制作一个扩展完整,配置正确的镜像。docker操作这里不详细赘述,直接上Dockerfile
FROM php:7.3-fpm

RUN pecl install yaf && docker-php-ext-enable yaf && echo '[yaf]\nyaf.use_namespace=On\nyaf.use_spl_autoload=On\nyaf.environ=develop'>>/usr/local/etc/php/conf.d/docker-php-ext-yaf.ini 
RUN pecl install redis && docker-php-ext-enable redis
RUN pecl install xdebug && docker-php-ext-enable xdebug
RUN docker-php-ext-install pdo && docker-php-ext-enable pdo
RUN docker-php-ext-install pdo_mysql && docker-php-ext-enable pdo_mysql

php7.x版本安装扩展较为容易,可直接使用pecl安装,php5.6版本稍微复杂一点点

FROM php:5.6-fpm

COPY ./yaf-2.3.5.tgz /tmp/yaf.tgz
RUN ls /tmp
RUN mkdir -p /tmp/yaf && tar -xf /tmp/yaf.tgz -C /tmp/yaf --strip-components=1 \
    && rm /tmp/yaf.tgz && docker-php-ext-configure /tmp/yaf --enable-yaf && docker-php-ext-install /tmp/yaf \
    && rm -r /tmp/yaf && echo '[yaf]\nyaf.use_namespace=On\nyaf.use_spl_autoload=On\nyaf.environ=develop'>>/usr/local/etc/php/conf.d/docker-php-ext-yaf.ini 
COPY ./redis-3.1.6.tgz /tmp/redis.tgz
RUN ls /tmp
RUN mkdir -p /tmp/redis && tar -xf /tmp/redis.tgz -C /tmp/redis --strip-components=1 \
    && rm /tmp/redis.tgz && docker-php-ext-configure /tmp/redis --enable-redis && docker-php-ext-install /tmp/redis \
    && rm -r /tmp/redis
RUN docker-php-ext-install mysql && docker-php-ext-enable mysql
  1. 生成镜像
docker build -t php73:v2.0 .

几点区别:

  • php5.6版本需要将下载好的扩展文件复制到镜像中安装
  • mysql只需要安装mysql扩展即可(根据项目代码而定)

四、配置PhpStorm

  1. 基本配置,新增cli,新增项目代码的挂载地址以及phpunit.phar挂载地址


    image.png
  2. 单元测试配置,指定.phar文件路径为容器内文件路径。


    image.png

五、安装redis容器

docker run -d -p 6379:6379 \
-v ${REDIS_CONF_FILE}:/etc/redis.conf
-v ${REDIS_DATA_DIR}:/data/
--ip 172.17.0.2 \
--name redis redis:5.0

redis也可简单安装,建议conf文件与data文件一起挂载出来,固定ip比较好配置

六、完成

支持编辑器断点调试了 XD。


image.png

注意几点

  • php连接redis需要填容器内ip地址,这里是 172.17.0.2
  • docker基础知识与phpunit基本设置需要自行补充
  • 各种扩展根据项目需要
  • 生手碰到较多的问题大概率是redis连接失败的问题,除了ip正确,查看redis容器与镜像是否在同一个网络内是关键:
    docker network ls
    docker inspect redis
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容