build-image.sh 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. #!/usr/bin/env sh
  2. set -e
  3. PHP_MINOR=$1
  4. PHP_VERSION=$( (wget -qO- "https://hub.docker.com/v2/repositories/library/php/tags?page_size=100&name=$PHP_MINOR" \
  5. | grep -Po "[0-9]+\.[0-9]+\.[0-9]+(?=-)" \
  6. || echo "$PHP_MINOR") \
  7. | head -1 \
  8. )
  9. XDEBUG_VERSION=$2
  10. FROM_IMAGE="php:$PHP_VERSION-cli-alpine"
  11. CONTAINER_NAME="json-machine-php-$PHP_VERSION"
  12. docker ps --all --format "{{.Names}}" | grep "$CONTAINER_NAME" && docker rm -f "$CONTAINER_NAME"
  13. >&2 echo "Building $CONTAINER_NAME from $FROM_IMAGE"
  14. printf "
  15. FROM $FROM_IMAGE
  16. RUN apk update && apk upgrade
  17. # https://stackoverflow.com/questions/76507083/pecl-install-no-releases-available#comment136513209_76651916
  18. RUN rm /etc/ssl/certs/ca-cert-DST_Root_CA_X3.pem || true \
  19. && cat /etc/ssl/certs/*.pem > /etc/ssl/certs/ca-certificates.crt \
  20. && cat /etc/ssl/certs/*.pem > /etc/ssl/cert.pem
  21. RUN apk add \
  22. autoconf \
  23. g++ \
  24. libtool \
  25. make \
  26. bash \
  27. linux-headers \
  28. && wget http://pear.php.net/go-pear.phar && php go-pear.phar \
  29. && pecl install xdebug-$XDEBUG_VERSION \
  30. && docker-php-ext-enable xdebug \
  31. && docker-php-ext-enable opcache \
  32. && wget https://getcomposer.org/download/2.2.18/composer.phar -O /usr/local/bin/composer \
  33. && chmod +x /usr/local/bin/composer
  34. " | docker build --quiet --tag "$CONTAINER_NAME" - > /dev/null
  35. echo "$CONTAINER_NAME"