Dockerfile 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. ARG PHP_VERSION=8.3
  2. ARG ALPINE_VERSION=3.18
  3. FROM alpine:3.18.4 as sphinx-lint
  4. RUN apk add python3 py3-pip git \
  5. && pip install sphinx-lint
  6. # This must be the same as in CI's job, but `--null` must be changed to `-0` (Alpine)
  7. CMD git ls-files --cached -z -- '*.rst' \
  8. | xargs -0 -- python3 -m sphinxlint --enable all --disable trailing-whitespace --max-line-length 2000
  9. FROM php:${PHP_VERSION}-cli-alpine${ALPINE_VERSION} as base
  10. # https://blog.codito.dev/2022/11/composer-binary-only-docker-images/
  11. # https://github.com/composer/docker/pull/250
  12. COPY --from=composer/composer:2-bin /composer /usr/local/bin/composer
  13. FROM base as vendor
  14. COPY composer.json /fixer/composer.json
  15. WORKDIR /fixer
  16. RUN composer install --prefer-dist --no-dev --optimize-autoloader --no-scripts
  17. FROM php:${PHP_VERSION}-cli-alpine${ALPINE_VERSION} as dist
  18. RUN mkdir /code
  19. WORKDIR /code
  20. COPY src /fixer/src
  21. COPY php-cs-fixer /fixer/php-cs-fixer
  22. # Only take the dependencies (not composer itself) into the container
  23. COPY --from=vendor /fixer/vendor /fixer/vendor
  24. RUN ln -s /fixer/php-cs-fixer /usr/local/bin/php-cs-fixer
  25. ENTRYPOINT ["/usr/local/bin/php-cs-fixer"]
  26. FROM base as php
  27. ARG DOCKER_USER_ID
  28. ARG DOCKER_GROUP_ID
  29. ARG PHP_XDEBUG_VERSION
  30. RUN if [ ! -z "$DOCKER_GROUP_ID" ] && [ ! getent group "${DOCKER_GROUP_ID}" > /dev/null ]; \
  31. then addgroup -S -g "${DOCKER_GROUP_ID}" devs; \
  32. fi \
  33. && if [ ! -z "$DOCKER_USER_ID" ] && [ ! -z "$DOCKER_GROUP_ID" ] && [ ! getent passwd "${DOCKER_USER_ID}" > /dev/null ]; \
  34. then adduser -S -u "${DOCKER_USER_ID}" -G "$(getent group "${DOCKER_GROUP_ID}" | awk -F: '{printf $1}')" dev; \
  35. fi \
  36. && apk add git \
  37. # php extensions
  38. && curl --location --output /usr/local/bin/install-php-extensions https://github.com/mlocati/docker-php-extension-installer/releases/latest/download/install-php-extensions \
  39. && chmod +x /usr/local/bin/install-php-extensions \
  40. && sync \
  41. && install-php-extensions \
  42. pcntl \
  43. xdebug-${PHP_XDEBUG_VERSION} \
  44. # xdebug command
  45. && curl --location --output /usr/local/bin/xdebug https://github.com/julienfalque/xdebug/releases/download/v2.0.0/xdebug \
  46. && chmod +x /usr/local/bin/xdebug
  47. COPY docker/xdebug.ini /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini