平時(shí)大家在開發(fā)php項(xiàng)目的時(shí)候,本地都要裝php程序和composer,做單元測(cè)試的時(shí)候還需要phpunit,如果需要單測(cè)覆蓋率的話還要開啟debug,本文將使用一個(gè)docker鏡像搞定這些。
先說下使用docker的優(yōu)點(diǎn)
- 團(tuán)隊(duì)開發(fā)環(huán)境統(tǒng)一,新人容易上手
- 便于管理各種php擴(kuò)展,也可以很方便的與測(cè)試生產(chǎn)環(huán)境保持一致
1,先準(zhǔn)備一個(gè)docker鏡像
下面是一個(gè)php7.3+composer2.1+phpunit9.5的dockerfile,大家也可以根據(jù)自己的需要進(jìn)行修改,然后自己構(gòu)建為鏡像
FROM composer:2.2.6 as composer
FROM registry.cn-shenzhen.aliyuncs.com/nyg_base/phpunit:9.5.9 as phpunit
FROM php:7.3-cli
LABEL maintainer="nyg1991@aliyun.com"
# 更改為阿里云鏡像
RUN sed -i s@/archive.ubuntu.com/@/mirrors.aliyun.com/@g /etc/apt/sources.list \
&& sed -i s@/deb.debian.org/@/mirrors.aliyun.com/@g /etc/apt/sources.list \
&& apt-get clean
#安裝zip pdo_mysql擴(kuò)展
RUN apt-get update \
&& apt-get install -y zlib1g-dev \
&& apt-get install -y libzip-dev \
&& docker-php-ext-install -j$(nproc) zip \
&& docker-php-ext-install -j$(nproc) pdo_mysql
#安裝debug,單測(cè)覆蓋率必須
RUN pecl install xdebug-2.8.1 && docker-php-ext-enable xdebug
#安裝composer
COPY --from=composer /usr/bin/composer /usr/local/bin/composer
#安裝phpunit
COPY --from=phpunit /usr/local/bin/phpunit /usr/local/bin/phpunit
RUN chmod +x /usr/local/bin/composer && chmod +x /usr/local/bin/phpunit
我把構(gòu)建的鏡像打個(gè)標(biāo)簽phpstorm:7.3-composer,方便下邊使用
也可以拉取我已經(jīng)構(gòu)建好的鏡像
docker pull registry.cn-shenzhen.aliyuncs.com/nyg/phpstorm:php-73-base
2,配置php解釋器
本地要先啟動(dòng)docker desktop
2.1點(diǎn)擊配置 》PHP 》CLI解釋器

2.2 點(diǎn)擊+ 》Form docker 》 docker 》選擇第一步構(gòu)建的鏡像

2.3 添加成功后如下圖,我們可以看到php版本號(hào)和xdebug的版本,然后點(diǎn)擊應(yīng)用,確定

2.4 這時(shí)已經(jīng)配置成功了,phpstorm會(huì)自動(dòng)生成路徑映射,把項(xiàng)目根目錄映射到容器中/opt/project

2.5 返回到編輯器,創(chuàng)建一個(gè)test.php文件,Crtl+Shift+F10 選擇剛才配置的解釋器,然后運(yùn)行,我們可以看到運(yùn)行成功,php解釋器的配置就算完成了

3,配置composer
3.1 這步配置比較簡單,看圖就可以了

3.2 安裝一個(gè)包測(cè)試一下
新建一個(gè)composer.json文件,點(diǎn)擊 【工具】 》【composer】》【管理依賴項(xiàng)】》在composer.json文件里隨便寫一個(gè)包名,然后點(diǎn)擊安裝,如果執(zhí)行成功,這步就完成了。如果失敗,可以查看事件日志是否缺少某些php擴(kuò)展,然后在dockerfile里安裝擴(kuò)展,重新構(gòu)建鏡像,再次點(diǎn)擊composer安裝,重新構(gòu)建鏡像不用再重新配置phpstorm。

3.3 配置composer命令行工具
使用phpstorm的composer工具只有幾個(gè)常用命令,我們?nèi)绻胍獔?zhí)行一些特殊的composer命令,比如composer -V,就需要再配置一個(gè)命令行工具
添加命令行工具,選擇composer



確定,返回到編輯器,測(cè)試下是否配置成功
Ctrl+Shift+X 運(yùn)行命令,輸入
c -V

看到輸出composer版本號(hào),也就配置成功一半了。
我們執(zhí)行下
c install

這時(shí)就發(fā)現(xiàn)執(zhí)行失敗,composer找不到
composer.json,因?yàn)閏omposer當(dāng)前的工作路徑是/usr/local/bin,并不是項(xiàng)目所在的目錄。然而phpstorm對(duì)這部分并不友好,找不到地方設(shè)置,只能用一個(gè)取巧的方法,配置--working-dir指定composer的工作路徑。回到上一步的設(shè)置,點(diǎn)擊【在編輯器中定義】

然后在編輯器中,找到命令執(zhí)行這里,增加
--working-dir=\opt\project,然后直接關(guān)閉
這里我們?cè)俅螆?zhí)行
c install,就可以執(zhí)行成功了
composer的配置就到此了
配置測(cè)試框架(phpunit,覆蓋率)
配置就直接看圖吧

寫個(gè)單元測(cè)試一下,首先準(zhǔn)備一個(gè)要測(cè)試的文件如下

單元測(cè)試文件

然后點(diǎn)擊 【使用覆蓋率運(yùn)行】,開始測(cè)試

運(yùn)行的結(jié)果如下,可以看到測(cè)試結(jié)果,以及覆蓋率,打開原文件能看到覆蓋了哪幾行代碼,綠色的是覆蓋過的,紅色為未覆蓋。

到此為止就配置完了,需要說明一點(diǎn),這個(gè)鏡像只是phpstorm執(zhí)行一些命令行用的,是cli模式,不是項(xiàng)目運(yùn)行鏡像。項(xiàng)目運(yùn)行鏡像,可以和測(cè)試環(huán)境、生產(chǎn)環(huán)境用同一個(gè)鏡像,基于php-fpm的鏡像構(gòu)建。