在Docker容器中运行phpUnit测试

时间:2019-03-18 14:55:40

标签: docker docker-compose phpunit dockerfile

我想运行Docker容器phpUnit WITHIN 的特定版本。该容器将使用特定版本的php。即

php:5.6-apache

它是一个苛刻的应用程序。我已经通过composer在主机文件上安装了phpunit,然后使用volume命令将其转移到容器中。
我的composer.json文件具有以下条目:

  

“ require-dev”:{           “ phpunit / phpunit”:“ ^ 5.0”       }

这是我的docker run命令,用于在我的testdev容器上运行测试:

docker run --rm -it -v ~/Users/mow/Documents/devFolder/testdev:/app testdev_php "php ./vendor/bin/phpunit"

这将返回错误:

exec: fatal: unable to exec php ./vendor/bin/phpunit: No such file or directory

我不清楚为什么要这样说,因为供应商目录位于我的网站目录的根目录。

这是我的dockerfile

FROM php:5.6-apache

ENV S6_OVERLAY_VERSION 1.11.0.1

RUN apt-get update && apt-get install -y \
    libldap2-dev \
    git \
    --no-install-recommends \
    && rm -r /var/lib/apt/lists/* \
    && docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ \
    && docker-php-ext-install ldap \
    && docker-php-ext-install mysqli pdo pdo_mysql

#install xdebug 
RUN git clone https://github.com/xdebug/xdebug.git \
    && cd xdebug \
    && git checkout tags/XDEBUG_2_5_5 \
    && phpize \
    && ./configure --enable-xdebug \
    && make \
    && make install


RUN a2enmod rewrite

COPY ./docker/rootfs /
COPY . /app

WORKDIR /app

ENTRYPOINT ["/init"]

我猜真正的问题是:在docker容器中运行phpUnit测试的正确方法是什么,以便使其服从该容器中的php版本。

2 个答案:

答案 0 :(得分:1)

在入口点,您需要运行composer install以安装将在Docker容器中可用的必需软件包

答案 1 :(得分:0)

没有Dockerfile,请在Windows PowerShell中使用以下代码:

docker run --rm -v ${pwd}:/app composer:latest require --dev phpunit/phpunit:^8

创建composer容器以安装phpunit,然后删除该容器。

注意:在Windows命令%cd%中/在Windows PowerShell ${pwd}中/在Linux $PWD


然后使用复制的所有内容创建新的PHP容器,包括phpuint feamework

docker run -d -p 80:80 --name my-php-apache -v ${pwd}:/var/www/html php:7.4.0-apache

要激活自动加载文件并进行测试,请访问此Page