1+ ARG PHP_VERSION
2+ FROM php:${PHP_VERSION}-cli-alpine AS dependencies
3+ ARG PHP_CS_FIXER
4+ RUN apk add --update --no-cache zip unzip php-zip
5+ COPY --from=composer /usr/bin/composer /usr/bin/composer
6+ RUN addgroup -S php && adduser -S php -G php \
7+ && mkdir -p /usr/src/xml-lint \
8+ && chown php:php -R /usr/src/xml-lint
9+ WORKDIR /usr/src/xml-lint
10+ COPY --chown=php:php . ./
11+ USER php
12+ RUN composer install --prefer-dist -o -a -n --no-progress \
13+ && \
14+ if [[ -n "${PHP_CS_FIXER}" ]]; then \
15+ composer install --working-dir=tools/php-cs-fixer --prefer-dist -o -a -n --no-progress; \
16+ fi
17+
18+ FROM php:${PHP_VERSION}-cli-alpine AS test
19+ ARG PHP_CS_FIXER
20+ RUN addgroup -S php && adduser -S php -G php \
21+ && mkdir -p /usr/src/xml-lint \
22+ && chown php:php -R /usr/src/xml-lint
23+
24+ WORKDIR /usr/src/xml-lint
25+ COPY --from=dependencies --chown=php:php /usr/src/xml-lint ./
26+ USER php
27+
28+ RUN if [[ -n "${PHP_CS_FIXER}" ]]; then \
29+ php tools/php-cs-fixer/vendor/bin/php-cs-fixer fix --dry-run -v; \
30+ fi
31+ RUN php vendor/bin/phpunit
32+ RUN php vendor/bin/behat
33+
34+ FROM dependencies AS build_production
35+ WORKDIR /usr/src/xml-lint
36+
37+ RUN rm -rf tools/ tests/ \
38+ && composer install --prefer-dist -o -a -n --no-progress --no-dev
39+
40+ FROM php:${PHP_VERSION}-cli-alpine AS production
41+ WORKDIR /usr/src/xml-lint
42+ COPY --from=build_production /usr/src/xml-lint ./
43+ RUN ln -s /usr/src/xml-lint/bin/xmllint /usr/bin/xml-lint
44+ WORKDIR /usr/src
45+ ENTRYPOINT ["php" , "/usr/src/xml-lint/bin/xmllint" ]
46+ CMD ["--help" ]
0 commit comments