diff --git a/docker/8.1-alpine/Dockerfile b/docker/8.1-alpine/Dockerfile new file mode 100644 index 0000000..4d6f9ee --- /dev/null +++ b/docker/8.1-alpine/Dockerfile @@ -0,0 +1,24 @@ +FROM php:8.1-alpine + +# Install os-level dependencies +RUN apk update \ + && apk --no-cache --virtual add git pcre-dev ${PHPIZE_DEPS} + +# Install scalar extension +RUN git clone https://github.com/nikic/scalar_objects.git \ + && cd scalar_objects \ + && phpize \ + && ./configure --enable-scalar_objects \ + && make \ + && make install \ + && php run-tests.php -p `which php` --show-diff -d extension=`pwd`/modules/scalar_objects.so -q \ + && docker-php-ext-enable scalar_objects + +# Remove os-level dependencies and src code +RUN apk del git pcre-dev ${PHPIZE_DEPS} \ + && rm -rf scalar_objects \ + && apk del git pcre-dev ${PHPIZE_DEPS} \ + && rm -rf /tmp/* /var/tmp/* + +ENTRYPOINT ["docker-php-entrypoint"] +CMD ["php", "-a"] diff --git a/docker/8.1-cli/Dockerfile b/docker/8.1-cli/Dockerfile new file mode 100644 index 0000000..7b69da2 --- /dev/null +++ b/docker/8.1-cli/Dockerfile @@ -0,0 +1,23 @@ +FROM php:8.1-cli + +# Install os-level dependencies +RUN apt-get update && apt-get install -y git + +# Install scalar extension +RUN git clone https://github.com/nikic/scalar_objects.git \ + && cd scalar_objects \ + && phpize \ + && ./configure --enable-scalar_objects \ + && make \ + && make install \ + && php run-tests.php -p `which php` --show-diff -d extension=`pwd`/modules/scalar_objects.so -q \ + && docker-php-ext-enable scalar_objects + +# Delete src code and os-level dependencies +RUN rm -rf scalar_objects \ + && apt-get purge -y git \ + && apt-get clean -y \ + && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* + +ENTRYPOINT ["docker-php-entrypoint"] +CMD ["php", "-a"] diff --git a/docker/README.md b/docker/README.md new file mode 100644 index 0000000..008fe6a --- /dev/null +++ b/docker/README.md @@ -0,0 +1,58 @@ +# Docker images + +Use `nikic/scalar_objects` with docker + +# Steps + +1. Build your image +```shell +$ docker build -t php-scalar-objects ./8.1-alpine +``` + +2. Create a docker file for your projects + +Example `Dockerfile` +```dockerfile +FROM php-scalar-objects +COPY . /usr/src/myapp +WORKDIR /usr/src/myapp +CMD [ "php", "./index.php" ] +``` + +Example `index.php` +```php +length()); // int(3) +var_dump($string->startsWith("a")); // bool(true) +``` + +3. Build your project + +```shell +$ docker build -t my-php-app . +``` + +> Execute this in the same directory where your app is + +4. Run your app + +```shell +$ docker run -it --rm --name my-php-running-app my-php-app:latest +```