Paul Kendal
Paul Kendal

Reputation: 565

running a phpUnit test within a docker container

i want to run a specific version of phpUnit WITHIN a docker container. This container will use a specific version of php. i.e

php:5.6-apache

Its a Laravel application. i have install phpunit via composer on the hostfiles and then used the volume command to transfer this to the container.
my composer.json file has following entry:

"require-dev": { "phpunit/phpunit": "^5.0" },

This is my docker run command to run the test on my testdev container:

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

This returns the error:

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

i am unclear why it says this because te vendor directory is at the root of my site directory.

this is my 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"]

I guess the real question is this: what is the correct way to run a phpUnit test within a docker container so that its subject to the php version within that container.

Upvotes: 2

Views: 7604

Answers (2)

Ahmad Al ALloush
Ahmad Al ALloush

Reputation: 385

without Dockerfile use this code in windows PowerShell :

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

create composer container to install phpunit then remove the container.

note: in windows Command %cd% / in windows PowerShell ${pwd} / in linux $PWD


then Create new PHP container with copy all fills include phpuint feamework

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

to active autoload file, and testing please visit this Page

Upvotes: 0

tver3305
tver3305

Reputation: 8594

In the Entrypoint, you need to ran composer install to install the requisite packages that will be available in the docker container

Upvotes: 3

Related Questions