08. Laravel Sail x Xdebug x Coverage

要产出覆盖率报告需要安装 Xdebug。因为我们使用 docker 环境,所以要修改 Dockerfile,当然不是直接进 vendor 改,我们要发布设定档。

安装 Xdebug

发布设定档

sail artisan sail:publish

改 Dockerfile (预设是跑 PHP 8.0)

FROM ubuntu:20.04

LABEL maintainer="Taylor Otwell"

ARG WWWGROUP
ARG XDEBUG

WORKDIR /var/www/html

ENV DEBIAN_FRONTEND noninteractive
ENV TZ=UTC

RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

RUN apt-get update \
    && apt-get install -y gnupg gosu curl ca-certificates zip unzip git supervisor sqlite3 libcap2-bin libpng-dev python2 \
    && mkdir -p ~/.gnupg \
    && chmod 600 ~/.gnupg \
    && echo "disable-ipv6" >> ~/.gnupg/dirmngr.conf \
    && apt-key adv --homedir ~/.gnupg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys E5267A6C \
    && apt-key adv --homedir ~/.gnupg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys C300EE8C \
    && echo "deb http://ppa.launchpad.net/ondrej/php/ubuntu focal main" > /etc/apt/sources.list.d/ppa_ondrej_php.list \
    && apt-get update \
    && apt-get install -y php8.0-cli php8.0-dev \
       php8.0-pgsql php8.0-sqlite3 php8.0-gd \
       php8.0-curl php8.0-memcached \
       php8.0-imap php8.0-mysql php8.0-mbstring \
       php8.0-xml php8.0-zip php8.0-bcmath php8.0-soap \
       php8.0-intl php8.0-readline \
       php8.0-msgpack php8.0-igbinary php8.0-ldap \
       php8.0-redis

RUN if [ ${XDEBUG}] ; then \
    apt-get install -y php-xdebug; \
fi;

RUN php -r "readfile('http://getcomposer.org/installer');" | php -- --install-dir=/usr/bin/ --filename=composer \
    && curl -sL https://deb.nodesource.com/setup_15.x | bash - \
    && apt-get install -y nodejs \
    && curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - \
    && echo "deb https://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list \
    && apt-get update \
    && apt-get install -y yarn \
    && apt-get install -y mysql-client \
    && apt-get install -y postgresql-client \
    && apt-get -y autoremove \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

RUN pecl channel-update https://pecl.php.net/channel.xml \
    && pecl install swoole

RUN setcap "cap_net_bind_service=+ep" /usr/bin/php8.0

RUN groupadd --force -g $WWWGROUP sail
RUN useradd -ms /bin/bash --no-user-group -g $WWWGROUP -u 1337 sail

COPY start-container /usr/local/bin/start-container
COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf
COPY php.ini /etc/php/8.0/cli/conf.d/99-sail.ini
RUN chmod +x /usr/local/bin/start-container

EXPOSE 8000

ENTRYPOINT ["start-container"]

改 php.ini

[XDebug]
zend_extension = xdebug.so
xdebug.mode = debug
xdebug.start_with_request = yes
xdebug.discover_client_host = true
xdebug.idekey = VSC
xdebug.client_host = host.docker.internal
xdebug.client_port = 9003

改 docker-compose.yml

  laravel.test:
    build:
      context: ./docker/8.0
      dockerfile: Dockerfile
      args:
        WWWGROUP: "${WWWGROUP}"
        XDEBUG: ${SAIL_DEBUG}
    image: sail-8.0/app
    ports:
      - "${APP_PORT:-80}:80"
    environment:
      WWWUSER: "${WWWUSER}"
      LARAVEL_SAIL: 1
    volumes:
      - ".:/var/www/html"
    networks:
      - sail
    depends_on:
      - mysql
      - selenium

最後 .env 加上

SAIL_DEBUG=true

到此,已经修改完设定。

sail build --no-cache

改完设定重新编译设定。

sail php -v

可以看到多了一行 Xdebug。

覆盖率报告

sail test tests/ --coverage-html ./report tests

https://ithelp.ithome.com.tw/upload/images/20210923/20139745iFsxqHtjdV.png

https://ithelp.ithome.com.tw/upload/images/20210923/20139745Gt1FNzBNRL.png


<<:  Day 23 「启动!Outside-In 之路」Controller 与单元测试

>>:  [Day 23] JS - 阵列 (Array) 常用方法介绍

从零开始用github架设静态网站入门(3) - CSS客制化

对於HTML里面编写的大多数元素我们都可以赋予它特别的属性,像是在前面章节我们提到,将div赋予了c...

Day29 MANO开源专案使用之kube5gnfvo - 样板介绍篇

相信在前两天介绍的OSM部分,有观看的大概了解了关於Network Slicing(NS)实例化所需...

Day24 参加职训(机器学习与资料分析工程师培训班),Python程序设计 & Pytorch

上午: Python程序设计 今日教学keras使用内建mnist dataset练习 from t...

UVA练习

uva 10252 一星题 题目大意大概就是,给定两个由小写字母组成的字串a和b,印出最长的小写字串...

就先在这边帮他上了一个主题了 Day1

今天是自己开始铁人赛的第一天,目标其实很简单,想要把之前学到的,之前没学到的 全部整合整理成一个作品...