В моем проекте у меня есть команда, которая запускает контейнер docker. Этот контейнер docker, который я назвал "phptester", запускает "phpunit" на общем томе и сохраняет результат в файле "result. xml".
Этот компонент помещается в веб-службу, которая вызывается API. Все отлично работает локально, но, к сожалению, на производственном сервере нет. Когда я запускаю контейнер на производственном сервере или команду, он запускает тесты phpunit и сохраняет результат в файле xml. Но через API файл xml остается пустым.
Вот конфигурация для контейнера:
Dockerfile:
FROM php:7.2-cli
RUN curl -sS https://getcomposer.org/installer | php \
&& mv composer.phar /usr/local/bin/ \
&& ln -s /usr/local/bin/composer.phar /usr/local/bin/composer
WORKDIR /var/www/html
COPY run.sh /usr/local/bin
CMD sh /usr/local/bin/run.sh
run. sh:
#!/usr/bin/env bash
## 01 - composer install
composer install --prefer-source --no-interaction
## 02 - phpunit
php /var/www/html/vendor/bin/phpunit --configuration ./phpunit.xml --log-junit ./result.xml
Контроллер:
$process = new Process("sudo docker run -v /var/www/folder:/var/www/html phptester");
Я пробовал:
- chmod 777 в файле xml.
- chown www-data: www-data в файле xml.