From 8ceab7e9f53a832ab0a50dcc7df1de07e66a22c0 Mon Sep 17 00:00:00 2001 From: Ludovic CANDELLIER Date: Mon, 22 Jan 2024 22:14:36 +0100 Subject: [PATCH] update docker --- docker/docker-compose.yml | 55 +- docker/laravel-horizon/Dockerfile | 344 +++++ docker/laravel-horizon/supervisord.conf | 10 + .../supervisord.d/laravel-horizon.conf | 9 + .../laravel-horizon.conf.example | 8 + docker/matomo/Dockerfile | 1 - docker/php-fpm/Dockerfile | 1261 +++++++++-------- docker/php-fpm/apt_sources/php.list | 2 +- docker/phpmyadmin/Dockerfile | 9 + docker/soketi/Dockerfile | 7 + docker/workspace/Dockerfile | 42 +- docker/workspace/apt_sources/php.list | 2 +- 12 files changed, 1097 insertions(+), 653 deletions(-) create mode 100755 docker/laravel-horizon/Dockerfile create mode 100755 docker/laravel-horizon/supervisord.conf create mode 100755 docker/laravel-horizon/supervisord.d/laravel-horizon.conf create mode 100755 docker/laravel-horizon/supervisord.d/laravel-horizon.conf.example create mode 100755 docker/phpmyadmin/Dockerfile create mode 100755 docker/soketi/Dockerfile diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index 60d13676..6297f551 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -121,7 +121,7 @@ services: - ./php-fpm/php${PHP_VERSION}.ini:/usr/local/etc/php/php.ini - ${APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER}${APP_CODE_CONTAINER_FLAG} ports: - - "127.0.0.1:${PHP_FPM_XDEBUG_PORT}:9003" + - "${PHP_FPM_XDEBUG_PORT}:9003" expose: - "9000" extra_hosts: @@ -190,12 +190,11 @@ services: - no_proxy volumes: - ${APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER}${APP_CODE_CONTAINER_FLAG} - - ${NGINX_HOST_LOG_PATH}:/var/log/nginx + - ${DATA_PATH_HOST}/logs/nginx:/var/log/nginx - ${NGINX_SITES_PATH}:/etc/nginx/sites-available - ${NGINX_SSL_PATH}:/etc/nginx/ssl ports: - "${NGINX_HOST_HTTP_PORT}:80" - - "${NGINX_HOST_HTTPS_PORT}:443" depends_on: - php-fpm networks: @@ -205,7 +204,7 @@ services: - traefik.port=80 - traefik.backend=nginx - traefik.frontend.rule=Host:opensem.docker.localhost - - traefik.http.routers.nginx.rule=Host(`opensem².docker.localhost`) + - traefik.http.routers.nginx.rule=Host(`opensem.docker.localhost`) ### MySQL ################################################ mysql: @@ -298,7 +297,7 @@ services: - ./data/certbot/certs/:/var/certs - ./certbot/letsencrypt/:/var/www/letsencrypt environment: - - CN="digital.opensem.ovh" + - CN="jardinenvie.com" - EMAIL="ludo@huma.net" networks: - frontend @@ -322,8 +321,8 @@ services: restart: unless-stopped image: 'quay.io/soketi/soketi:1.0-16-debian' ports: - - '${SOKETI_PORT:-6001}:6001' - - '${SOKETI_METRICS_SERVER_PORT:-9601}:9601' + - '127.0.0.1:${SOKETI_PORT:-6001}:6001' + - '127.0.0.1:${SOKETI_METRICS_SERVER_PORT:-9601}:9601' environment: - SOKETI_DEBUG=1 - SOKETI_DEFAULT_APP_ID=${PUSHER_APP_ID} @@ -331,8 +330,6 @@ services: - SOKETI_DEFAULT_APP_SECRET=${PUSHER_APP_SECRET} - SOKETI_DEFAULT_APP_ENABLE_CLIENT_MESSAGES=true - DEFAULT_APP_USER_AUTHENTICATION=true - expose: - - "6001" extra_hosts: - "dockerhost:${DOCKER_HOST_IP}" networks: @@ -365,8 +362,8 @@ services: - INSTALL_MONGO=${LARAVEL_HORIZON_INSTALL_MONGO} - INSTALL_FFMPEG=${LARAVEL_HORIZON_INSTALL_FFMPEG} - INSTALL_AUDIOWAVEFORM=${LARAVEL_HORIZON_INSTALL_AUDIOWAVEFORM} - - PUID=${LARAVEL_HORIZON_PUID} - - PGID=${LARAVEL_HORIZON_PGID} + - PUID=${PUID} + - PGID=${PGID} - IMAGEMAGICK_VERSION=${LARAVEL_HORIZON_IMAGEMAGICK_VERSION} volumes: - ${APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER} @@ -378,26 +375,22 @@ services: networks: - backend -### Proxy ########################################### - proxy: - restart: always - build: - context: ./proxy - args: - - PUID=${PUID} - - PGID=${PGID} - - TZ=${TIMEZONE} - - http_proxy - - https_proxy - - no_proxy - volumes: - - ${APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER}${APP_CODE_CONTAINER_FLAG} - - ${PROXY_HOST_LOG_PATH}:/var/log/nginx - - ${PROXY_SITES_PATH}:/etc/nginx/sites-available - - ${PROXY_SSL_PATH}:/etc/nginx/ssl +### Meilisearch + meilisearch: + container_name: meilisearch + image: getmeili/meilisearch:latest + environment: + - http_proxy + - https_proxy + - MEILI_MASTER_KEY=${MEILI_MASTER_KEY:-masterKey} + # - MEILI_NO_ANALYTICS=${MEILI_NO_ANALYTICS:-true} + # - MEILI_ENV=${MEILI_ENV:-development} + # - MEILI_LOG_LEVEL + # - MEILI_DB_PATH=${MEILI_DB_PATH:-/data.ms} ports: - - "${NGINX_HOST_HTTP_PORT}:80" - - "${NGINX_HOST_HTTPS_PORT}:443" + - ${MEILI_PORT:-7700}:7700 networks: - - frontend - backend + volumes: + - ${DATA_PATH_HOST}/meili_data:/meili_data + restart: unless-stopped \ No newline at end of file diff --git a/docker/laravel-horizon/Dockerfile b/docker/laravel-horizon/Dockerfile new file mode 100755 index 00000000..7056f9c5 --- /dev/null +++ b/docker/laravel-horizon/Dockerfile @@ -0,0 +1,344 @@ +# +#-------------------------------------------------------------------------- +# Image Setup +#-------------------------------------------------------------------------- +# + +ARG LARADOCK_PHP_VERSION +FROM php:${LARADOCK_PHP_VERSION}-alpine + +LABEL maintainer="Ludovic CANDELLIER " + +ARG LARADOCK_PHP_VERSION + +# If you're in China, or you need to change sources, will be set CHANGE_SOURCE to true in .env. + +ARG CHANGE_SOURCE=false +RUN if [ ${CHANGE_SOURCE} = true ]; then \ + # Change application source from dl-cdn.alpinelinux.org to aliyun source + sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/' /etc/apk/repositories \ + ;fi + +RUN apk --update add wget \ + curl \ + git \ + build-base \ + libmcrypt-dev \ + libxml2-dev \ + pcre-dev \ + zlib-dev \ + autoconf \ + cyrus-sasl-dev \ + libgsasl-dev \ + oniguruma-dev \ + supervisor \ + procps; \ + if [ $(php -r "echo PHP_VERSION_ID - PHP_RELEASE_VERSION;") = "50600" ] || \ + [ $(php -r "echo PHP_VERSION_ID - PHP_RELEASE_VERSION;") = "70000" ]; then \ + apk --update add libressl libressl-dev; \ + else \ + apk --update add openssl-dev; \ + fi + +RUN pecl channel-update pecl.php.net; \ + docker-php-ext-install mysqli mbstring pdo pdo_mysql xml pcntl; \ + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "8" ] && \ + [ $(php -r "echo PHP_VERSION_ID - PHP_RELEASE_VERSION;") != "80000" ]; then \ + php -m | grep -oiE '^tokenizer$'; \ + else \ + docker-php-ext-install tokenizer; \ + fi + +# Add a non-root user to help install ffmpeg: +ARG PUID=1000 +ENV PUID ${PUID} +ARG PGID=1000 +ENV PGID ${PGID} + +RUN addgroup -g ${PGID} laradock && \ + adduser -D -G laradock -u ${PUID} laradock + +#Install BZ2: +ARG INSTALL_BZ2=false +RUN if [ ${INSTALL_BZ2} = true ]; then \ + apk --update add bzip2-dev; \ + docker-php-ext-install bz2 \ + ;fi + +########################################################################### +# PHP GnuPG: +########################################################################### + +ARG INSTALL_GNUPG=false + +RUN set -eux; if [ ${INSTALL_GNUPG} = true ]; then \ + apk add --no-cache --no-progress --virtual BUILD_DEPS_PHP_GNUPG gpgme-dev; \ + apk add --no-cache --no-progress gpgme; \ + pecl install gnupg; \ + docker-php-ext-enable gnupg; \ + fi + +#Install LDAP +ARG INSTALL_LDAP=false; +RUN set -eux; if [ ${INSTALL_LDAP} = true ]; then \ + apk add --no-cache --no-progress openldap-dev; \ + docker-php-ext-install ldap; \ + php -m | grep -oiE '^ldap$'; \ + fi + +#Install GD package: +ARG INSTALL_GD=false +RUN if [ ${INSTALL_GD} = true ]; then \ + apk add --update --no-cache freetype-dev libjpeg-turbo-dev jpeg-dev libpng-dev; \ + if [ $(php -r "echo PHP_VERSION_ID - PHP_RELEASE_VERSION;") = "80000" ] || [ $(php -r "echo PHP_VERSION_ID - PHP_RELEASE_VERSION;") = "70400" ]; then \ + docker-php-ext-configure gd --with-freetype --with-jpeg; \ + else \ + ## docker-php-ext-configure gd --with-freetype-dir=/usr/lib/ --with-jpeg-dir=/usr/lib/ --with-png-dir=/usr/lib/; \ + docker-php-ext-configure gd --with-freetype --with-jpeg; \ + fi && \ + docker-php-ext-install gd \ + ;fi + +#Install ImageMagick package: +ARG INSTALL_IMAGEMAGICK=false +ARG IMAGEMAGICK_VERSION=latest +ENV IMAGEMAGICK_VERSION ${IMAGEMAGICK_VERSION} +RUN set -eux; \ + if [ ${INSTALL_IMAGEMAGICK} = true ]; then \ + apk add --update --no-cache imagemagick-dev imagemagick; \ + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "8" ]; then \ + cd /tmp && \ + if [ ${IMAGEMAGICK_VERSION} = "latest" ]; then \ + git clone https://github.com/Imagick/imagick; \ + else \ + git clone --branch ${IMAGEMAGICK_VERSION} https://github.com/Imagick/imagick; \ + fi && \ + cd imagick && \ + phpize && \ + ./configure && \ + make && \ + make install && \ + rm -r /tmp/imagick; \ + else \ + pecl install imagick; \ + fi && \ + docker-php-ext-enable imagick; \ + php -m | grep -q 'imagick'; \ + fi + +#Install GMP package: +ARG INSTALL_GMP=false +RUN if [ ${INSTALL_GMP} = true ]; then \ + apk add --update --no-cache gmp gmp-dev; \ + docker-php-ext-install gmp \ + ;fi + +#Install BCMath package: +ARG INSTALL_BCMATH=false +RUN if [ ${INSTALL_BCMATH} = true ]; then \ + docker-php-ext-install bcmath \ + ;fi + +#Install Sockets package: +ARG INSTALL_SOCKETS=false +RUN if [ ${INSTALL_SOCKETS} = true ]; then \ + docker-php-ext-install sockets \ + ;fi + +# Install PostgreSQL drivers: +ARG INSTALL_PGSQL=false +RUN if [ ${INSTALL_PGSQL} = true ]; then \ + apk --update add postgresql-dev \ + && docker-php-ext-install pdo_pgsql \ + ;fi + +# Install ZipArchive: +ARG INSTALL_ZIP_ARCHIVE=false +RUN set -eux; \ + if [ ${INSTALL_ZIP_ARCHIVE} = true ]; then \ + apk --update add libzip-dev && \ + if [ ${LARADOCK_PHP_VERSION} = "7.3" ] || [ ${LARADOCK_PHP_VERSION} = "7.4" ] || [ $(php -r "echo PHP_MAJOR_VERSION;") = "8" ]; then \ + docker-php-ext-configure zip; \ + else \ + docker-php-ext-configure zip --with-libzip; \ + fi && \ + # Install the zip extension + docker-php-ext-install zip \ + ;fi + +# Install PhpRedis package: +ARG INSTALL_PHPREDIS=false +RUN if [ ${INSTALL_PHPREDIS} = true ]; then \ + # Install Php Redis Extension + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ + printf "\n" | pecl install -o -f redis-4.3.0; \ + else \ + printf "\n" | pecl install -o -f redis; \ + fi; \ + rm -rf /tmp/pear; \ + docker-php-ext-enable redis; \ + fi + +ARG INSTALL_FFMPEG=false +RUN if [ ${INSTALL_FFMPEG} = true ]; then \ + # Add ffmpeg to horizon + apk add ffmpeg \ + ;fi + +# Install BBC Audio Waveform Image Generator: +ARG INSTALL_AUDIOWAVEFORM=false +RUN if [ ${INSTALL_AUDIOWAVEFORM} = true ]; then \ + apk add git make cmake gcc g++ libmad-dev libid3tag-dev libsndfile-dev gd-dev boost-dev libgd libpng-dev zlib-dev \ + && apk add autoconf automake libtool gettext \ + && wget https://github.com/xiph/flac/archive/1.3.3.tar.gz \ + && tar xzf 1.3.3.tar.gz \ + && cd flac-1.3.3 \ + && ./autogen.sh \ + && ./configure --enable-shared=no \ + && make \ + && make install \ + && cd .. \ + && git clone https://github.com/bbc/audiowaveform.git \ + && cd audiowaveform \ + && wget https://github.com/google/googletest/archive/release-1.10.0.tar.gz \ + && tar xzf release-1.10.0.tar.gz \ + && ln -s googletest-release-1.10.0/googletest googletest \ + && ln -s googletest-release-1.10.0/googlemock googlemock \ + && mkdir build \ + && cd build \ + && cmake .. \ + && make \ + && make install \ + ;fi + +##################################### +# poppler-utils: +##################################### +USER root + +ARG INSTALL_POPPLER_UTILS=false + +RUN if [ ${INSTALL_POPPLER_UTILS} = true ]; then \ + apk add --update --no-cache poppler-utils antiword \ + ;fi + +# Install Cassandra drivers: +ARG INSTALL_CASSANDRA=false +RUN if [ ${INSTALL_CASSANDRA} = true ]; then \ + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "8" ]; then \ + echo "PHP Driver for Cassandra is not supported for PHP 8.0."; \ + else \ + apk add --update --no-cache cassandra-cpp-driver libuv gmp \ + && apk add --update --no-cache cassandra-cpp-driver-dev gmp-dev --virtual .build-sec \ + && cd /usr/src \ + && git clone https://github.com/datastax/php-driver.git \ + && cd php-driver/ext \ + && phpize \ + && mkdir -p /usr/src/php-driver/build \ + && cd /usr/src/php-driver/build \ + && ../ext/configure > /dev/null \ + && make clean > /dev/null \ + && make > /dev/null 2>&1 \ + && make install \ + && docker-php-ext-enable cassandra \ + && apk del .build-sec; \ + fi \ + ;fi + +# Install MongoDB drivers: +ARG INSTALL_MONGO=false +RUN if [ ${INSTALL_MONGO} = true ]; then \ + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ + pecl install mongo; \ + docker-php-ext-enable mongo; \ + else \ + pecl install mongodb; \ + docker-php-ext-enable mongodb; \ + fi; \ + fi + +########################################################################### +# YAML: extension +########################################################################### + +ARG INSTALL_YAML=false + +RUN if [ ${INSTALL_YAML} = true ]; then \ + apk --update add -U --no-cache --virtual temp yaml-dev \ + && apk add --no-cache yaml \ + && docker-php-source extract; \ + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ + pecl install yaml-1.3.2; \ + elif [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ] && [ $(php -r "echo PHP_MINOR_VERSION;") = "0" ]; then \ + pecl install yaml-2.0.4; \ + else \ + pecl install yaml; \ + fi \ + && docker-php-ext-enable yaml \ + && pecl clear-cache \ + && docker-php-source delete \ + && apk del temp \ + ;fi + +########################################################################### +# PHP Memcached: +########################################################################### + +ARG INSTALL_MEMCACHED=false + +RUN if [ ${INSTALL_MEMCACHED} = true ]; then \ + apk --update add libmemcached-dev; \ + # Install the php memcached extension + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ + pecl install memcached-2.2.0; \ + else \ + pecl install memcached; \ + fi; \ + docker-php-ext-enable memcached; \ + php -m | grep -r 'memcached'; \ + fi + +#-------------------------------------------------------------------------- +# Clean up +#-------------------------------------------------------------------------- + +RUN rm /var/cache/apk/* \ + && mkdir -p /var/www + +# +#-------------------------------------------------------------------------- +# Optional Supervisord Configuration +#-------------------------------------------------------------------------- +# +# Modify the ./supervisor.conf file to match your App's requirements. +# Make sure you rebuild your container with every change. +# + +COPY supervisord.conf /etc/supervisord.conf + +ENTRYPOINT ["/usr/bin/supervisord", "-n", "-c", "/etc/supervisord.conf"] + +# +#-------------------------------------------------------------------------- +# Optional Software's Installation +#-------------------------------------------------------------------------- +# +# If you need to modify this image, feel free to do it right here. +# +# -- Your awesome modifications go here -- # + +# +#-------------------------------------------------------------------------- +# Check PHP version +#-------------------------------------------------------------------------- +# + +RUN php -v | head -n 1 | grep -q "PHP ${PHP_VERSION}." + +# +#-------------------------------------------------------------------------- +# Final Touch +#-------------------------------------------------------------------------- +# + +WORKDIR /etc/supervisor/conf.d/ diff --git a/docker/laravel-horizon/supervisord.conf b/docker/laravel-horizon/supervisord.conf new file mode 100755 index 00000000..79cc9d91 --- /dev/null +++ b/docker/laravel-horizon/supervisord.conf @@ -0,0 +1,10 @@ +[supervisord] +nodaemon=true +[supervisorctl] +[inet_http_server] +port = 127.0.0.1:9001 +[rpcinterface:supervisor] +supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface + +[include] +files = supervisord.d/*.conf \ No newline at end of file diff --git a/docker/laravel-horizon/supervisord.d/laravel-horizon.conf b/docker/laravel-horizon/supervisord.d/laravel-horizon.conf new file mode 100755 index 00000000..62e2d7e5 --- /dev/null +++ b/docker/laravel-horizon/supervisord.d/laravel-horizon.conf @@ -0,0 +1,9 @@ +[program:laravel-horizon] +process_name=%(program_name)s_%(process_num)02d +user=laradock +command=php /var/www/artisan horizon +autostart=true +autorestart=true +redirect_stderr=true +stdout_logfile=/var/www/storage/logs/horizon.log +stopwaitsecs=3600 diff --git a/docker/laravel-horizon/supervisord.d/laravel-horizon.conf.example b/docker/laravel-horizon/supervisord.d/laravel-horizon.conf.example new file mode 100755 index 00000000..8e24fdaf --- /dev/null +++ b/docker/laravel-horizon/supervisord.d/laravel-horizon.conf.example @@ -0,0 +1,8 @@ +[program:laravel-horizon] +process_name=%(program_name)s_%(process_num)02d +user=laradock +command=php /var/www/artisan horizon +autostart=true +autorestart=true +redirect_stderr=true +stdout_logfile=/var/www/storage/logs/horizon.log diff --git a/docker/matomo/Dockerfile b/docker/matomo/Dockerfile index 13a72515..cc44c09a 100644 --- a/docker/matomo/Dockerfile +++ b/docker/matomo/Dockerfile @@ -1,5 +1,4 @@ FROM matomo:latest -# FROM bitnami/minideb:latest LABEL maintainer="Ludovic CANDELLIER " diff --git a/docker/php-fpm/Dockerfile b/docker/php-fpm/Dockerfile index 3feda183..0fc36dd9 100644 --- a/docker/php-fpm/Dockerfile +++ b/docker/php-fpm/Dockerfile @@ -16,51 +16,41 @@ ARG LARADOCK_PHP_VERSION ARG BASE_IMAGE_TAG_PREFIX=latest FROM laradock/php-fpm:${BASE_IMAGE_TAG_PREFIX}-${LARADOCK_PHP_VERSION} -LABEL maintainer="Mahmoud Zalt " +LABEL maintainer="Ludovic Candellier ludo@huma.net" ARG LARADOCK_PHP_VERSION # Set Environment Variables ENV DEBIAN_FRONTEND noninteractive -# If you're in China, or you need to change sources, will be set CHANGE_SOURCE to true in .env. - -ARG CHANGE_SOURCE=false -RUN if [ ${CHANGE_SOURCE} = true ]; then \ - # Change application source from deb.debian.org to aliyun source - sed -i 's/deb.debian.org/mirrors.tuna.tsinghua.edu.cn/' /etc/apt/sources.list && \ - sed -i 's/security.debian.org/mirrors.tuna.tsinghua.edu.cn/' /etc/apt/sources.list && \ - sed -i 's/security-cdn.debian.org/mirrors.tuna.tsinghua.edu.cn/' /etc/apt/sources.list \ -;fi - # always run apt update when start and after add new source list, then clean up at end. RUN set -xe; \ - apt-get update -yqq && \ - pecl channel-update pecl.php.net && \ - apt-get install -yqq \ - apt-utils \ - gnupg2 \ - git \ - # - #-------------------------------------------------------------------------- - # Mandatory Software's Installation - #-------------------------------------------------------------------------- - # - # Mandatory Software's such as ("mcrypt", "pdo_mysql", "libssl-dev", ....) - # are installed on the base image 'laradock/php-fpm' image. If you want - # to add more Software's or remove existing one, you need to edit the - # base image (https://github.com/Laradock/php-fpm). - # - # next lines are here becase there is no auto build on dockerhub see https://github.com/laradock/laradock/pull/1903#issuecomment-463142846 - libzip-dev zip unzip && \ - if [ ${LARADOCK_PHP_VERSION} = "7.3" ] || [ ${LARADOCK_PHP_VERSION} = "7.4" ] || [ $(php -r "echo PHP_MAJOR_VERSION;") = "8" ]; then \ - docker-php-ext-configure zip; \ - else \ - docker-php-ext-configure zip --with-libzip; \ - fi && \ - # Install the zip extension - docker-php-ext-install zip && \ - php -m | grep -q 'zip' + apt-get update -yqq && \ + pecl channel-update pecl.php.net && \ + apt-get install -yqq \ + apt-utils \ + gnupg2 \ + git tzdata ghostscript chromium chromium-sandbox poppler-utils \ + # + #-------------------------------------------------------------------------- + # Mandatory Software's Installation + #-------------------------------------------------------------------------- + # + # Mandatory Software's such as ("mcrypt", "pdo_mysql", "libssl-dev", ....) + # are installed on the base image 'laradock/php-fpm' image. If you want + # to add more Software's or remove existing one, you need to edit the + # base image (https://github.com/Laradock/php-fpm). + # + # next lines are here becase there is no auto build on dockerhub see https://github.com/laradock/laradock/pull/1903#issuecomment-463142846 + libzip-dev zip unzip && \ + if [ ${LARADOCK_PHP_VERSION} = "7.3" ] || [ ${LARADOCK_PHP_VERSION} = "7.4" ] || [ $(php -r "echo PHP_MAJOR_VERSION;") = "8" ]; then \ + docker-php-ext-configure zip; \ + else \ + docker-php-ext-configure zip --with-libzip; \ + fi && \ + # Install the zip extension + docker-php-ext-install zip && \ + php -m | grep -q 'zip' # #-------------------------------------------------------------------------- @@ -81,7 +71,7 @@ ARG INSTALL_BZ2=false RUN if [ ${INSTALL_BZ2} = true ]; then \ apt-get -yqq install libbz2-dev; \ docker-php-ext-install bz2 \ -;fi + ;fi ########################################################################### # Enchant: @@ -92,7 +82,7 @@ RUN if [ ${INSTALL_ENCHANT} = true ]; then \ apt-get install -yqq libenchant-dev; \ docker-php-ext-install enchant; \ php -m | grep -oiE '^enchant$'; \ -fi + fi ########################################################################### # GMP (GNU Multiple Precision): @@ -101,13 +91,13 @@ fi ARG INSTALL_GMP=false RUN if [ ${INSTALL_GMP} = true ]; then \ - # Install the GMP extension - apt-get install -yqq libgmp-dev && \ - if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ - ln -s /usr/include/x86_64-linux-gnu/gmp.h /usr/include/gmp.h \ - ;fi && \ - docker-php-ext-install gmp \ -;fi + # Install the GMP extension + apt-get install -yqq libgmp-dev && \ + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ + ln -s /usr/include/x86_64-linux-gnu/gmp.h /usr/include/gmp.h \ + ;fi && \ + docker-php-ext-install gmp \ + ;fi ########################################################################### # GnuPG: @@ -116,11 +106,11 @@ RUN if [ ${INSTALL_GMP} = true ]; then \ ARG INSTALL_GNUPG=false RUN if [ ${INSTALL_GNUPG} = true ]; then \ - apt-get -yq install libgpgme-dev; \ - pecl install gnupg; \ - docker-php-ext-enable gnupg; \ - php -m | grep -q 'gnupg'; \ - fi + apt-get -yq install libgpgme-dev; \ + pecl install gnupg; \ + docker-php-ext-enable gnupg; \ + php -m | grep -q 'gnupg'; \ + fi ########################################################################### # SSH2: @@ -129,15 +119,15 @@ RUN if [ ${INSTALL_GNUPG} = true ]; then \ ARG INSTALL_SSH2=false RUN if [ ${INSTALL_SSH2} = true ]; then \ - # Install the ssh2 extension - apt-get -y install libssh2-1-dev && \ - if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ - pecl install -a ssh2-0.13; \ - else \ - pecl install -a ssh2-1.3.1; \ - fi && \ - docker-php-ext-enable ssh2 \ -;fi + # Install the ssh2 extension + apt-get -y install libssh2-1-dev && \ + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ + pecl install -a ssh2-0.13; \ + else \ + pecl install -a ssh2-1.3.1; \ + fi && \ + docker-php-ext-enable ssh2 \ + ;fi ########################################################################### # libfaketime: @@ -148,8 +138,8 @@ USER root ARG INSTALL_FAKETIME=false RUN if [ ${INSTALL_FAKETIME} = true ]; then \ - apt-get install -yqq libfaketime \ -;fi + apt-get install -yqq libfaketime \ + ;fi ########################################################################### # SOAP: @@ -158,11 +148,11 @@ RUN if [ ${INSTALL_FAKETIME} = true ]; then \ ARG INSTALL_SOAP=false RUN if [ ${INSTALL_SOAP} = true ]; then \ - # Install the soap extension - rm /etc/apt/preferences.d/no-debian-php && \ - apt-get -y install libxml2-dev php-soap && \ - docker-php-ext-install soap \ -;fi + # Install the soap extension + rm /etc/apt/preferences.d/no-debian-php && \ + apt-get -y install libxml2-dev php-soap && \ + docker-php-ext-install soap \ + ;fi ########################################################################### # XSL: @@ -171,10 +161,10 @@ RUN if [ ${INSTALL_SOAP} = true ]; then \ ARG INSTALL_XSL=false RUN if [ ${INSTALL_XSL} = true ]; then \ - # Install the xsl extension - apt-get -y install libxslt-dev && \ - docker-php-ext-install xsl \ -;fi + # Install the xsl extension + apt-get -y install libxslt-dev && \ + docker-php-ext-install xsl \ + ;fi ########################################################################### # pgsql @@ -183,9 +173,9 @@ RUN if [ ${INSTALL_XSL} = true ]; then \ ARG INSTALL_PGSQL=false RUN if [ ${INSTALL_PGSQL} = true ]; then \ - # Install the pgsql extension - docker-php-ext-install pgsql \ -;fi + # Install the pgsql extension + docker-php-ext-install pgsql \ + ;fi ########################################################################### # pgsql client @@ -193,19 +183,20 @@ RUN if [ ${INSTALL_PGSQL} = true ]; then \ ARG INSTALL_PG_CLIENT=false ARG INSTALL_POSTGIS=false +ARG PG_CLIENT_VERSION RUN if [ ${INSTALL_PG_CLIENT} = true ]; then \ - apt-get install -yqq gnupg \ - && . /etc/os-release \ - && echo "deb http://apt.postgresql.org/pub/repos/apt $VERSION_CODENAME-pgdg main" > /etc/apt/sources.list.d/pgdg.list \ - && curl -sL https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add - \ - && apt-get update -yqq \ - && apt-get install -yqq postgresql-client-12 postgis; \ - if [ ${INSTALL_POSTGIS} = true ]; then \ - apt-get install -yqq postgis; \ - fi \ - && apt-get purge -yqq gnupg \ -;fi + apt-get install -yqq gnupg \ + && . /etc/os-release \ + && echo "deb http://apt.postgresql.org/pub/repos/apt $VERSION_CODENAME-pgdg main" > /etc/apt/sources.list.d/pgdg.list \ + && curl -sL https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add - \ + && apt-get update -yqq \ + && apt-get install -yqq postgresql-client-${PG_CLIENT_VERSION} postgis; \ + if [ ${INSTALL_POSTGIS} = true ]; then \ + apt-get install -yqq postgis; \ + fi \ + && apt-get purge -yqq gnupg \ + ;fi ########################################################################### # xDebug: @@ -218,24 +209,24 @@ RUN if [ ${INSTALL_XDEBUG} = true ]; then \ # Install the xdebug extension # https://xdebug.org/docs/compat if [ $(php -r "echo PHP_MAJOR_VERSION;") = "8" ] || { [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ] && { [ $(php -r "echo PHP_MINOR_VERSION;") = "4" ] || [ $(php -r "echo PHP_MINOR_VERSION;") = "3" ] ;} ;}; then \ - if [ ${LARADOCK_PHP_VERSION} = "8.2" ]; then \ - pecl install xdebug-3.2.0; \ - else \ - pecl install xdebug-3.1.4; \ - fi; \ + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "8" ]; then \ + pecl install xdebug-3.2.1; \ else \ - if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ - pecl install xdebug-2.5.5; \ - else \ - if [ $(php -r "echo PHP_MINOR_VERSION;") = "0" ]; then \ - pecl install xdebug-2.9.0; \ - else \ - pecl install xdebug-2.9.8; \ - fi \ - fi \ + pecl install xdebug-3.1.6; \ + fi; \ + else \ + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ + pecl install xdebug-2.5.5; \ + else \ + if [ $(php -r "echo PHP_MINOR_VERSION;") = "0" ]; then \ + pecl install xdebug-2.9.0; \ + else \ + pecl install xdebug-2.9.8; \ + fi \ + fi \ fi && \ docker-php-ext-enable xdebug \ -;fi + ;fi # Copy xdebug configuration for remote debugging COPY ./xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini @@ -249,10 +240,10 @@ RUN if [ $(php -r "echo PHP_MAJOR_VERSION;") = "8" ] || { [ $(php -r "echo PHP_M sed -i "s/xdebug.remote_mode=req/; xdebug.remote_mode=req/" /usr/local/etc/php/conf.d/xdebug.ini && \ sed -i "s/xdebug.remote_autostart=0/xdebug.start_with_request=yes/" /usr/local/etc/php/conf.d/xdebug.ini && \ sed -i "s/xdebug.remote_enable=0/xdebug.mode=debug/" /usr/local/etc/php/conf.d/xdebug.ini \ -;else \ + ;else \ sed -i "s/xdebug.remote_autostart=0/xdebug.remote_autostart=1/" /usr/local/etc/php/conf.d/xdebug.ini && \ sed -i "s/xdebug.remote_enable=0/xdebug.remote_enable=1/" /usr/local/etc/php/conf.d/xdebug.ini \ -;fi + ;fi RUN sed -i "s/xdebug.cli_color=0/xdebug.cli_color=1/" /usr/local/etc/php/conf.d/xdebug.ini ########################################################################### @@ -265,10 +256,10 @@ ARG INSTALL_PCOV=false RUN if [ ${INSTALL_PCOV} = true ]; then \ if [ $(php -r "echo PHP_MAJOR_VERSION;") = "8" ] || { [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ] && [ $(php -r "echo PHP_MINOR_VERSION;") != "0" ]; }; then \ - pecl install pcov && \ - docker-php-ext-enable pcov \ + pecl install pcov && \ + docker-php-ext-enable pcov \ ;fi \ -;fi + ;fi ########################################################################### # Phpdbg: @@ -277,9 +268,9 @@ RUN if [ ${INSTALL_PCOV} = true ]; then \ ARG INSTALL_PHPDBG=false RUN if [ ${INSTALL_PHPDBG} = true ]; then \ - # Load the xdebug extension only with phpunit commands - apt-get install -yqq --force-yes php${LARADOCK_PHP_VERSION}-phpdbg \ -;fi + # Load the xdebug extension only with phpunit commands + apt-get install -yqq --force-yes php${LARADOCK_PHP_VERSION}-phpdbg \ + ;fi ########################################################################### # Blackfire: @@ -288,12 +279,12 @@ RUN if [ ${INSTALL_PHPDBG} = true ]; then \ ARG INSTALL_BLACKFIRE=false RUN if [ ${INSTALL_XDEBUG} = false -a ${INSTALL_BLACKFIRE} = true ]; then \ - version=$(php -r "echo PHP_MAJOR_VERSION.PHP_MINOR_VERSION;") \ - && curl -A "Docker" -o /tmp/blackfire-probe.tar.gz -D - -L -s https://blackfire.io/api/v1/releases/probe/php/linux/amd64/$version \ - && tar zxpf /tmp/blackfire-probe.tar.gz -C /tmp \ - && mv /tmp/blackfire-*.so $(php -r "echo ini_get('extension_dir');")/blackfire.so \ - && printf "extension=blackfire.so\nblackfire.agent_socket=tcp://blackfire:8707\n" > $PHP_INI_DIR/conf.d/blackfire.ini \ -;fi + version=$(php -r "echo PHP_MAJOR_VERSION.PHP_MINOR_VERSION;") \ + && curl -A "Docker" -o /tmp/blackfire-probe.tar.gz -D - -L -s https://blackfire.io/api/v1/releases/probe/php/linux/amd64/$version \ + && tar zxpf /tmp/blackfire-probe.tar.gz -C /tmp \ + && mv /tmp/blackfire-*.so $(php -r "echo ini_get('extension_dir');")/blackfire.so \ + && printf "extension=blackfire.so\nblackfire.agent_socket=tcp://blackfire:8707\n" > $PHP_INI_DIR/conf.d/blackfire.ini \ + ;fi ########################################################################### # PHP REDIS EXTENSION @@ -302,15 +293,17 @@ RUN if [ ${INSTALL_XDEBUG} = false -a ${INSTALL_BLACKFIRE} = true ]; then \ ARG INSTALL_PHPREDIS=false RUN if [ ${INSTALL_PHPREDIS} = true ]; then \ - # Install Php Redis Extension - if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ - pecl install -o -f redis-4.3.0; \ - else \ - pecl install -o -f redis; \ - fi \ - && rm -rf /tmp/pear \ - && docker-php-ext-enable redis \ -;fi + # Install Php Redis Extension + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ + pecl install -o -f redis-4.3.0; \ + elif [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ] && { [ $(php -r "echo PHP_MINOR_VERSION;") = "0" ] || [ $(php -r "echo PHP_MINOR_VERSION;") = "1" ] ;}; then \ + pecl install -o -f redis-5.3.7; \ + else \ + pecl install -o -f redis; \ + fi \ + && rm -rf /tmp/pear \ + && docker-php-ext-enable redis \ + ;fi ########################################################################### # Swoole EXTENSION @@ -318,22 +311,22 @@ RUN if [ ${INSTALL_PHPREDIS} = true ]; then \ ARG INSTALL_SWOOLE=false RUN set -eux; \ - if [ ${INSTALL_SWOOLE} = true ]; then \ - # Install Php Swoole Extension - if [ $(php -r "echo PHP_VERSION_ID - PHP_RELEASE_VERSION;") = "50600" ]; then \ - pecl install swoole-2.0.10; \ - elif [ $(php -r "echo PHP_VERSION_ID - PHP_RELEASE_VERSION;") = "70000" ]; then \ - pecl install swoole-4.3.5; \ - elif [ $(php -r "echo PHP_VERSION_ID - PHP_RELEASE_VERSION;") = "70100" ]; then \ - pecl install swoole-4.5.11; \ - elif [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ]; then \ - pecl install swoole-4.8.12; \ - else \ - pecl install swoole; \ - fi; \ - docker-php-ext-enable swoole; \ - php -m | grep -q 'swoole'; \ - fi + if [ ${INSTALL_SWOOLE} = true ]; then \ + # Install Php Swoole Extension + if [ $(php -r "echo PHP_VERSION_ID - PHP_RELEASE_VERSION;") = "50600" ]; then \ + pecl install swoole-2.0.10; \ + elif [ $(php -r "echo PHP_VERSION_ID - PHP_RELEASE_VERSION;") = "70000" ]; then \ + pecl install swoole-4.3.5; \ + elif [ $(php -r "echo PHP_VERSION_ID - PHP_RELEASE_VERSION;") = "70100" ]; then \ + pecl install swoole-4.5.11; \ + elif [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ]; then \ + pecl install swoole-4.8.12; \ + else \ + pecl install swoole; \ + fi; \ + docker-php-ext-enable swoole; \ + php -m | grep -q 'swoole'; \ + fi ########################################################################### # Taint EXTENSION @@ -342,13 +335,13 @@ RUN set -eux; \ ARG INSTALL_TAINT=false RUN if [ ${INSTALL_TAINT} = true ]; then \ - # Install Php TAINT Extension - if [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ]; then \ - pecl install taint && \ - docker-php-ext-enable taint && \ - php -m | grep -q 'taint'; \ - fi \ -;fi + # Install Php TAINT Extension + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ]; then \ + pecl install taint && \ + docker-php-ext-enable taint && \ + php -m | grep -q 'taint'; \ + fi \ + ;fi ########################################################################### # MongoDB: @@ -357,21 +350,21 @@ RUN if [ ${INSTALL_TAINT} = true ]; then \ ARG INSTALL_MONGO=false RUN if [ ${INSTALL_MONGO} = true ]; then \ - # Install the mongodb extension - if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ - pecl install mongo; \ - docker-php-ext-enable mongo; \ - php -m | grep -oiE '^mongo$'; \ - else \ - if [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ] && { [ $(php -r "echo PHP_MINOR_VERSION;") = "0" ] || [ $(php -r "echo PHP_MINOR_VERSION;") = "1" ] ;}; then \ - pecl install mongodb-1.9.2; \ - else \ - pecl install mongodb; \ - fi; \ - docker-php-ext-enable mongodb; \ - php -m | grep -oiE '^mongodb$'; \ - fi; \ -fi + # Install the mongodb extension + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ + pecl install mongo; \ + docker-php-ext-enable mongo; \ + php -m | grep -oiE '^mongo$'; \ + else \ + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ] && { [ $(php -r "echo PHP_MINOR_VERSION;") = "0" ] || [ $(php -r "echo PHP_MINOR_VERSION;") = "1" ] ;}; then \ + pecl install mongodb-1.9.2; \ + else \ + pecl install mongodb; \ + fi; \ + docker-php-ext-enable mongodb; \ + php -m | grep -oiE '^mongodb$'; \ + fi; \ + fi ########################################################################### # Xhprof: @@ -380,27 +373,27 @@ fi ARG INSTALL_XHPROF=false RUN set -eux; \ - if [ ${INSTALL_XHPROF} = true ]; then \ - # Install the php xhprof extension - if [ $(php -r "echo PHP_MAJOR_VERSION;") != 5 ]; then \ - pecl install xhprof; \ - else \ - curl -L -o /tmp/xhprof.tar.gz "https://codeload.github.com/phacility/xhprof/tar.gz/master"; \ - mkdir -p /tmp/xhprof; \ - tar -C /tmp/xhprof -zxvf /tmp/xhprof.tar.gz --strip 1; \ - ( \ - cd /tmp/xhprof/extension; \ - phpize; \ - ./configure; \ - make; \ - make install; \ - ); \ - rm -r /tmp/xhprof; \ - rm /tmp/xhprof.tar.gz; \ - fi; \ - docker-php-ext-enable xhprof; \ - php -m | grep -q 'xhprof'; \ - fi + if [ ${INSTALL_XHPROF} = true ]; then \ + # Install the php xhprof extension + if [ $(php -r "echo PHP_MAJOR_VERSION;") != 5 ]; then \ + pecl install xhprof; \ + else \ + curl -L -o /tmp/xhprof.tar.gz "https://codeload.github.com/phacility/xhprof/tar.gz/master"; \ + mkdir -p /tmp/xhprof; \ + tar -C /tmp/xhprof -zxvf /tmp/xhprof.tar.gz --strip 1; \ + ( \ + cd /tmp/xhprof/extension; \ + phpize; \ + ./configure; \ + make; \ + make install; \ + ); \ + rm -r /tmp/xhprof; \ + rm /tmp/xhprof.tar.gz; \ + fi; \ + docker-php-ext-enable xhprof; \ + php -m | grep -q 'xhprof'; \ + fi # if [ ${INSTALL_XHPROF_USE_TIDYWAYS} = true ]; then \ # https://github.com/tideways/php-xhprof-extension @@ -419,17 +412,21 @@ RUN set -eux; \ ARG INSTALL_AMQP=false RUN set -eux; \ - if [ ${INSTALL_AMQP} = true ]; then \ - # # Install the amqp extension - apt-get -yqq install librabbitmq-dev; \ - if [ $(php -r "echo PHP_MAJOR_VERSION;") = "8" ]; then \ - pecl install amqp-1.11.0beta; \ - else \ - pecl install amqp; \ - fi; \ - docker-php-ext-enable amqp; \ - php -m | grep -oiE '^amqp$'; \ - fi + if [ ${INSTALL_AMQP} = true ]; then \ + # # Install the amqp extension + apt-get -yqq install librabbitmq-dev; \ + if [ ${LARADOCK_PHP_VERSION} = "7.3" ] \ + || [ ${LARADOCK_PHP_VERSION} = "7.2" ] \ + || [ ${LARADOCK_PHP_VERSION} = "7.1" ] \ + || [ ${LARADOCK_PHP_VERSION} = "7.0" ] \ + || [ ${LARADOCK_PHP_VERSION} = "5.6" ]; then \ + pecl install amqp-1.11.0; \ + else \ + pecl install amqp; \ + fi; \ + docker-php-ext-enable amqp; \ + php -m | grep -oiE '^amqp$'; \ + fi ########################################################################### # CASSANDRA: @@ -438,33 +435,33 @@ RUN set -eux; \ ARG INSTALL_CASSANDRA=false RUN if [ ${INSTALL_CASSANDRA} = true ]; then \ - if [ $(php -r "echo PHP_MAJOR_VERSION;") = "8" ]; then \ - echo "PHP Driver for Cassandra is not supported for PHP 8.0."; \ - else \ - apt-get install libgmp-dev -yqq && \ - curl https://downloads.datastax.com/cpp-driver/ubuntu/18.04/dependencies/libuv/v1.35.0/libuv1-dev_1.35.0-1_amd64.deb -o libuv1-dev.deb && \ - curl https://downloads.datastax.com/cpp-driver/ubuntu/18.04/dependencies/libuv/v1.35.0/libuv1_1.35.0-1_amd64.deb -o libuv1.deb && \ - curl https://downloads.datastax.com/cpp-driver/ubuntu/18.04/cassandra/v2.16.0/cassandra-cpp-driver-dev_2.16.0-1_amd64.deb -o cassandra-cpp-driver-dev.deb && \ - curl https://downloads.datastax.com/cpp-driver/ubuntu/18.04/cassandra/v2.16.0/cassandra-cpp-driver_2.16.0-1_amd64.deb -o cassandra-cpp-driver.deb && \ - dpkg -i libuv1.deb && \ - dpkg -i libuv1-dev.deb && \ - dpkg -i cassandra-cpp-driver.deb && \ - dpkg -i cassandra-cpp-driver-dev.deb && \ - rm libuv1.deb libuv1-dev.deb cassandra-cpp-driver-dev.deb cassandra-cpp-driver.deb && \ - cd /usr/src && \ - git clone https://github.com/datastax/php-driver.git && \ - cd /usr/src/php-driver/ext && \ - phpize && \ - mkdir /usr/src/php-driver/build && \ - cd /usr/src/php-driver/build && \ - ../ext/configure > /dev/null && \ - make clean > /dev/null && \ - make > /dev/null 2>&1 && \ - make install && \ - echo "extension=cassandra.so" >> /etc/php/${LARADOCK_PHP_VERSION}/mods-available/cassandra.ini && \ - ln -s /etc/php/${LARADOCK_PHP_VERSION}/mods-available/cassandra.ini /etc/php/${LARADOCK_PHP_VERSION}/cli/conf.d/30-cassandra.ini; \ - fi \ -;fi + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "8" ]; then \ + echo "PHP Driver for Cassandra is not supported for PHP 8.0."; \ + else \ + apt-get install libgmp-dev -yqq && \ + curl https://downloads.datastax.com/cpp-driver/ubuntu/18.04/dependencies/libuv/v1.35.0/libuv1-dev_1.35.0-1_amd64.deb -o libuv1-dev.deb && \ + curl https://downloads.datastax.com/cpp-driver/ubuntu/18.04/dependencies/libuv/v1.35.0/libuv1_1.35.0-1_amd64.deb -o libuv1.deb && \ + curl https://downloads.datastax.com/cpp-driver/ubuntu/18.04/cassandra/v2.16.0/cassandra-cpp-driver-dev_2.16.0-1_amd64.deb -o cassandra-cpp-driver-dev.deb && \ + curl https://downloads.datastax.com/cpp-driver/ubuntu/18.04/cassandra/v2.16.0/cassandra-cpp-driver_2.16.0-1_amd64.deb -o cassandra-cpp-driver.deb && \ + dpkg -i libuv1.deb && \ + dpkg -i libuv1-dev.deb && \ + dpkg -i cassandra-cpp-driver.deb && \ + dpkg -i cassandra-cpp-driver-dev.deb && \ + rm libuv1.deb libuv1-dev.deb cassandra-cpp-driver-dev.deb cassandra-cpp-driver.deb && \ + cd /usr/src && \ + git clone https://github.com/datastax/php-driver.git && \ + cd /usr/src/php-driver/ext && \ + phpize && \ + mkdir /usr/src/php-driver/build && \ + cd /usr/src/php-driver/build && \ + ../ext/configure > /dev/null && \ + make clean > /dev/null && \ + make > /dev/null 2>&1 && \ + make install && \ + echo "extension=cassandra.so" >> /etc/php/${LARADOCK_PHP_VERSION}/mods-available/cassandra.ini && \ + ln -s /etc/php/${LARADOCK_PHP_VERSION}/mods-available/cassandra.ini /etc/php/${LARADOCK_PHP_VERSION}/cli/conf.d/30-cassandra.ini; \ + fi \ + ;fi ########################################################################### # GEARMAN: @@ -473,21 +470,21 @@ RUN if [ ${INSTALL_CASSANDRA} = true ]; then \ ARG INSTALL_GEARMAN=false RUN if [ ${INSTALL_GEARMAN} = true ]; then \ - apt-get -y install libgearman-dev && \ - cd /tmp && \ - curl -L https://github.com/wcgallego/pecl-gearman/archive/gearman-2.0.5.zip -O && \ - unzip gearman-2.0.5.zip && \ - mv pecl-gearman-gearman-2.0.5 pecl-gearman && \ - cd /tmp/pecl-gearman && \ - phpize && \ - ./configure && \ - make -j$(nproc) && \ - make install && \ - cd / && \ - rm /tmp/gearman-2.0.5.zip && \ - rm -r /tmp/pecl-gearman && \ - docker-php-ext-enable gearman \ -;fi + apt-get -y install libgearman-dev && \ + cd /tmp && \ + curl -L https://github.com/wcgallego/pecl-gearman/archive/gearman-2.0.5.zip -O && \ + unzip gearman-2.0.5.zip && \ + mv pecl-gearman-gearman-2.0.5 pecl-gearman && \ + cd /tmp/pecl-gearman && \ + phpize && \ + ./configure && \ + make -j$(nproc) && \ + make install && \ + cd / && \ + rm /tmp/gearman-2.0.5.zip && \ + rm -r /tmp/pecl-gearman && \ + docker-php-ext-enable gearman \ + ;fi ########################################################################### # xlswriter: @@ -495,16 +492,16 @@ RUN if [ ${INSTALL_GEARMAN} = true ]; then \ ARG INSTALL_XLSWRITER=false RUN set -eux; \ - if [ ${INSTALL_XLSWRITER} = true ]; then \ - # Install Php xlswriter Extension \ - if [ $(php -r "echo PHP_MAJOR_VERSION;") != "5" ]; then \ - pecl install xlswriter &&\ - docker-php-ext-enable xlswriter &&\ - php -m | grep -q 'xlswriter'; \ - else \ - echo "PHP Extension for xlswriter is not supported for PHP 5.0";\ - fi \ - ;fi + if [ ${INSTALL_XLSWRITER} = true ]; then \ + # Install Php xlswriter Extension \ + if [ $(php -r "echo PHP_MAJOR_VERSION;") != "5" ]; then \ + pecl install xlswriter &&\ + docker-php-ext-enable xlswriter &&\ + php -m | grep -q 'xlswriter'; \ + else \ + echo "PHP Extension for xlswriter is not supported for PHP 5.0";\ + fi \ + ;fi ########################################################################### # pcntl @@ -512,9 +509,9 @@ RUN set -eux; \ ARG INSTALL_PCNTL=false RUN if [ ${INSTALL_PCNTL} = true ]; then \ - # Installs pcntl, helpful for running Horizon - docker-php-ext-install pcntl \ -;fi + # Installs pcntl, helpful for running Horizon + docker-php-ext-install pcntl \ + ;fi ########################################################################### # bcmath: @@ -523,9 +520,9 @@ RUN if [ ${INSTALL_PCNTL} = true ]; then \ ARG INSTALL_BCMATH=false RUN if [ ${INSTALL_BCMATH} = true ]; then \ - # Install the bcmath extension - docker-php-ext-install bcmath \ -;fi + # Install the bcmath extension + docker-php-ext-install bcmath \ + ;fi ########################################################################### # PHP Memcached: @@ -534,14 +531,14 @@ RUN if [ ${INSTALL_BCMATH} = true ]; then \ ARG INSTALL_MEMCACHED=false RUN if [ ${INSTALL_MEMCACHED} = true ]; then \ - # Install the php memcached extension - if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ - echo '' | pecl -q install memcached-2.2.0; \ - else \ - echo '' | pecl -q install memcached; \ - fi \ - && docker-php-ext-enable memcached \ -;fi + # Install the php memcached extension + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ + echo '' | pecl -q install memcached-2.2.0; \ + else \ + echo '' | pecl -q install memcached; \ + fi \ + && docker-php-ext-enable memcached \ + ;fi ########################################################################### # Exif: @@ -550,9 +547,9 @@ RUN if [ ${INSTALL_MEMCACHED} = true ]; then \ ARG INSTALL_EXIF=false RUN if [ ${INSTALL_EXIF} = true ]; then \ - # Enable Exif PHP extentions requirements - docker-php-ext-install exif \ -;fi + # Enable Exif PHP extentions requirements + docker-php-ext-install exif \ + ;fi ########################################################################### # PHP Aerospike: @@ -563,36 +560,36 @@ USER root ARG INSTALL_AEROSPIKE=false RUN set -xe; \ - if [ ${INSTALL_AEROSPIKE} = true ]; then \ - # Fix dependencies for PHPUnit within aerospike extension - apt-get -y install sudo wget && \ - # Install the php aerospike extension - if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ - curl -L -o /tmp/aerospike-client-php.tar.gz https://github.com/aerospike/aerospike-client-php5/archive/master.tar.gz; \ - else \ - curl -L -o /tmp/aerospike-client-php.tar.gz https://github.com/aerospike/aerospike-client-php/archive/master.tar.gz; \ - fi \ - && mkdir -p /tmp/aerospike-client-php \ - && tar -C /tmp/aerospike-client-php -zxvf /tmp/aerospike-client-php.tar.gz --strip 1 \ - && \ - if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ - ( \ - cd /tmp/aerospike-client-php/src/aerospike \ - && phpize \ - && ./build.sh \ - && make install \ - ) \ - else \ - ( \ - cd /tmp/aerospike-client-php/src \ - && phpize \ - && ./build.sh \ - && make install \ - ) \ - fi \ - && rm /tmp/aerospike-client-php.tar.gz \ - && docker-php-ext-enable aerospike \ -;fi + if [ ${INSTALL_AEROSPIKE} = true ]; then \ + # Fix dependencies for PHPUnit within aerospike extension + apt-get -y install sudo wget && \ + # Install the php aerospike extension + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ + curl -L -o /tmp/aerospike-client-php.tar.gz https://github.com/aerospike/aerospike-client-php5/archive/master.tar.gz; \ + else \ + curl -L -o /tmp/aerospike-client-php.tar.gz https://github.com/aerospike/aerospike-client-php/archive/master.tar.gz; \ + fi \ + && mkdir -p /tmp/aerospike-client-php \ + && tar -C /tmp/aerospike-client-php -zxvf /tmp/aerospike-client-php.tar.gz --strip 1 \ + && \ + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ + ( \ + cd /tmp/aerospike-client-php/src/aerospike \ + && phpize \ + && ./build.sh \ + && make install \ + ) \ + else \ + ( \ + cd /tmp/aerospike-client-php/src \ + && phpize \ + && ./build.sh \ + && make install \ + ) \ + fi \ + && rm /tmp/aerospike-client-php.tar.gz \ + && docker-php-ext-enable aerospike \ + ;fi ########################################################################### # PHP OCI8: @@ -612,39 +609,41 @@ ENV OCI_INCLUDE_DIR="/opt/oracle/instantclient_${ORACLE_INSTANT_CLIENT_VERSION}/ ENV OCI_VERSION=${ORACLE_INSTANT_CLIENT_MAJOR} RUN if [ ${INSTALL_OCI8} = true ]; then \ - # Install wget - apt-get install --no-install-recommends -yqq wget \ - # Install Oracle Instantclient - && mkdir /opt/oracle \ - && cd /opt/oracle \ - && wget ${ORACLE_INSTANT_CLIENT_MIRROR}instantclient-basic-linux.${ORACLE_INSTANT_CLIENT_ARCH}-${ORACLE_INSTANT_CLIENT_VERSION}.zip \ - && wget ${ORACLE_INSTANT_CLIENT_MIRROR}instantclient-sdk-linux.${ORACLE_INSTANT_CLIENT_ARCH}-${ORACLE_INSTANT_CLIENT_VERSION}.zip \ - && unzip /opt/oracle/instantclient-basic-linux.${ORACLE_INSTANT_CLIENT_ARCH}-${ORACLE_INSTANT_CLIENT_VERSION}.zip -d /opt/oracle \ - && unzip /opt/oracle/instantclient-sdk-linux.${ORACLE_INSTANT_CLIENT_ARCH}-${ORACLE_INSTANT_CLIENT_VERSION}.zip -d /opt/oracle \ - && if [ ${OCI_VERSION} -lt 18 ] ; then ln -s /opt/oracle/instantclient_${ORACLE_INSTANT_CLIENT_VERSION}/libclntsh.so.${ORACLE_INSTANT_CLIENT_MAJOR}.${ORACLE_INSTANT_CLIENT_MINOR} /opt/oracle/instantclient_${ORACLE_INSTANT_CLIENT_VERSION}/libclntsh.so ; fi\ - && if [ ${OCI_VERSION} -lt 18 ] ; then ln -s /opt/oracle/instantclient_${ORACLE_INSTANT_CLIENT_VERSION}/libclntshcore.so.${ORACLE_INSTANT_CLIENT_MAJOR}.${ORACLE_INSTANT_CLIENT_MINOR} /opt/oracle/instantclient_${ORACLE_INSTANT_CLIENT_VERSION}/libclntshcore.so ; fi \ - && if [ ${OCI_VERSION} -lt 18 ] ; then ln -s /opt/oracle/instantclient_${ORACLE_INSTANT_CLIENT_VERSION}/libocci.so.${ORACLE_INSTANT_CLIENT_MAJOR}.${ORACLE_INSTANT_CLIENT_MINOR} /opt/oracle/instantclient_${ORACLE_INSTANT_CLIENT_VERSION}/libocci.so ; fi \ - && rm -rf /opt/oracle/*.zip \ - # Install PHP extensions deps - && apt-get install --no-install-recommends -yqq \ - libaio-dev \ - freetds-dev && \ - # Install PHP extensions - if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ - echo 'instantclient,/opt/oracle/instantclient_${ORACLE_INSTANT_CLIENT_VERSION}/' | pecl install oci8-2.0.12; \ - elif [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ]; then \ - echo 'instantclient,/opt/oracle/instantclient_${ORACLE_INSTANT_CLIENT_VERSION}/' | pecl install oci8-2.2.0; \ - elif [ $(php -r "echo PHP_MAJOR_VERSION;") = "8" ] && [ $(php -r "echo PHP_MINOR_VERSION;") = "0" ]; then \ - echo "instantclient,/opt/oracle/instantclient_${ORACLE_INSTANT_CLIENT_VERSION}/" | pecl install oci8-3.0.1; \ - else \ - echo "instantclient,/opt/oracle/instantclient_${ORACLE_INSTANT_CLIENT_VERSION}/" | pecl install oci8; \ - fi \ - && docker-php-ext-configure pdo_oci --with-pdo-oci=instantclient,/opt/oracle/instantclient_${ORACLE_INSTANT_CLIENT_VERSION},${ORACLE_INSTANT_CLIENT_MAJOR}.${ORACLE_INSTANT_CLIENT_MINOR} \ - && docker-php-ext-configure pdo_dblib --with-libdir=/lib/x86_64-linux-gnu \ - && docker-php-ext-install \ - pdo_oci \ - && docker-php-ext-enable \ - oci8 \ + # Install wget + apt-get install --no-install-recommends -yqq wget \ + # Install Oracle Instantclient + && mkdir /opt/oracle \ + && cd /opt/oracle \ + && wget ${ORACLE_INSTANT_CLIENT_MIRROR}instantclient-basic-linux.${ORACLE_INSTANT_CLIENT_ARCH}-${ORACLE_INSTANT_CLIENT_VERSION}.zip \ + && wget ${ORACLE_INSTANT_CLIENT_MIRROR}instantclient-sdk-linux.${ORACLE_INSTANT_CLIENT_ARCH}-${ORACLE_INSTANT_CLIENT_VERSION}.zip \ + && unzip /opt/oracle/instantclient-basic-linux.${ORACLE_INSTANT_CLIENT_ARCH}-${ORACLE_INSTANT_CLIENT_VERSION}.zip -d /opt/oracle \ + && unzip /opt/oracle/instantclient-sdk-linux.${ORACLE_INSTANT_CLIENT_ARCH}-${ORACLE_INSTANT_CLIENT_VERSION}.zip -d /opt/oracle \ + && if [ ${OCI_VERSION} -lt 18 ] ; then ln -s /opt/oracle/instantclient_${ORACLE_INSTANT_CLIENT_VERSION}/libclntsh.so.${ORACLE_INSTANT_CLIENT_MAJOR}.${ORACLE_INSTANT_CLIENT_MINOR} /opt/oracle/instantclient_${ORACLE_INSTANT_CLIENT_VERSION}/libclntsh.so ; fi\ + && if [ ${OCI_VERSION} -lt 18 ] ; then ln -s /opt/oracle/instantclient_${ORACLE_INSTANT_CLIENT_VERSION}/libclntshcore.so.${ORACLE_INSTANT_CLIENT_MAJOR}.${ORACLE_INSTANT_CLIENT_MINOR} /opt/oracle/instantclient_${ORACLE_INSTANT_CLIENT_VERSION}/libclntshcore.so ; fi \ + && if [ ${OCI_VERSION} -lt 18 ] ; then ln -s /opt/oracle/instantclient_${ORACLE_INSTANT_CLIENT_VERSION}/libocci.so.${ORACLE_INSTANT_CLIENT_MAJOR}.${ORACLE_INSTANT_CLIENT_MINOR} /opt/oracle/instantclient_${ORACLE_INSTANT_CLIENT_VERSION}/libocci.so ; fi \ + && rm -rf /opt/oracle/*.zip \ + # Install PHP extensions deps + && apt-get install --no-install-recommends -yqq \ + libaio-dev \ + freetds-dev && \ + # Install PHP extensions + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ + echo 'instantclient,/opt/oracle/instantclient_${ORACLE_INSTANT_CLIENT_VERSION}/' | pecl install oci8-2.0.12; \ + elif [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ]; then \ + echo 'instantclient,/opt/oracle/instantclient_${ORACLE_INSTANT_CLIENT_VERSION}/' | pecl install oci8-2.2.0; \ + elif [ $(php -r "echo PHP_MAJOR_VERSION;") = "8" ] && [ $(php -r "echo PHP_MINOR_VERSION;") = "0" ]; then \ + echo "instantclient,/opt/oracle/instantclient_${ORACLE_INSTANT_CLIENT_VERSION}/" | pecl install oci8-3.0.1; \ + elif [ $(php -r "echo PHP_MAJOR_VERSION . PHP_MINOR_VERSION;") = "81" ]; then \ + echo "instantclient,/opt/oracle/instantclient_${ORACLE_INSTANT_CLIENT_VERSION}/" | pecl install oci8-3.2.1; \ + else \ + echo "instantclient,/opt/oracle/instantclient_${ORACLE_INSTANT_CLIENT_VERSION}/" | pecl install oci8; \ + fi \ + && docker-php-ext-configure pdo_oci --with-pdo-oci=instantclient,/opt/oracle/instantclient_${ORACLE_INSTANT_CLIENT_VERSION},${ORACLE_INSTANT_CLIENT_MAJOR}.${ORACLE_INSTANT_CLIENT_MINOR} \ + && docker-php-ext-configure pdo_dblib --with-libdir=/lib/x86_64-linux-gnu \ + && docker-php-ext-install \ + pdo_oci \ + && docker-php-ext-enable \ + oci8 \ ;fi ########################################################################### @@ -654,16 +653,22 @@ RUN if [ ${INSTALL_OCI8} = true ]; then \ ARG INSTALL_IONCUBE=false RUN if [ ${INSTALL_IONCUBE} = true ]; then \ - if [ $(php -r "echo PHP_MAJOR_VERSION;") != "8" ]; then \ - # Install the php ioncube loader - curl -L -o /tmp/ioncube_loaders_lin_x86-64.tar.gz https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz \ - && tar zxpf /tmp/ioncube_loaders_lin_x86-64.tar.gz -C /tmp \ - && mv /tmp/ioncube/ioncube_loader_lin_${LARADOCK_PHP_VERSION}.so $(php -r "echo ini_get('extension_dir');")/ioncube_loader.so \ - && printf "zend_extension=ioncube_loader.so\n" > $PHP_INI_DIR/conf.d/0ioncube.ini \ - && rm -rf /tmp/ioncube* \ - && php -m | grep -oiE '^ionCube Loader$' \ - ;fi \ -;fi + if [ ${LARADOCK_PHP_VERSION} = "8.1" ] \ + || [ ${LARADOCK_PHP_VERSION} = "7.4" ] \ + || [ ${LARADOCK_PHP_VERSION} = "7.3" ] \ + || [ ${LARADOCK_PHP_VERSION} = "7.2" ] \ + || [ ${LARADOCK_PHP_VERSION} = "7.1" ] \ + || [ ${LARADOCK_PHP_VERSION} = "7.0" ] \ + || [ ${LARADOCK_PHP_VERSION} = "5.6" ]; then \ + # Install the php ioncube loader + curl -L -o /tmp/ioncube_loaders_lin_x86-64.tar.gz https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz \ + && tar zxpf /tmp/ioncube_loaders_lin_x86-64.tar.gz -C /tmp \ + && mv /tmp/ioncube/ioncube_loader_lin_${LARADOCK_PHP_VERSION}.so $(php -r "echo ini_get('extension_dir');")/ioncube_loader.so \ + && printf "zend_extension=ioncube_loader.so\n" > $PHP_INI_DIR/conf.d/0ioncube.ini \ + && rm -rf /tmp/ioncube* \ + && php -m | grep -oiE '^ionCube Loader$' \ + ;fi \ + ;fi ########################################################################### # Opcache: @@ -672,8 +677,8 @@ RUN if [ ${INSTALL_IONCUBE} = true ]; then \ ARG INSTALL_OPCACHE=false RUN if [ ${INSTALL_OPCACHE} = true ]; then \ - docker-php-ext-install opcache \ -;fi + docker-php-ext-install opcache \ + ;fi # Copy opcache configration COPY ./opcache.ini /usr/local/etc/php/conf.d/opcache.ini @@ -685,8 +690,8 @@ COPY ./opcache.ini /usr/local/etc/php/conf.d/opcache.ini ARG INSTALL_MYSQLI=false RUN if [ ${INSTALL_MYSQLI} = true ]; then \ - docker-php-ext-install mysqli \ -;fi + docker-php-ext-install mysqli \ + ;fi ########################################################################### @@ -696,11 +701,11 @@ RUN if [ ${INSTALL_MYSQLI} = true ]; then \ ARG INSTALL_INTL=false RUN if [ ${INSTALL_INTL} = true ]; then \ - # Install intl and requirements - apt-get install -yqq zlib1g-dev libicu-dev g++ && \ - docker-php-ext-configure intl && \ - docker-php-ext-install intl \ -;fi + # Install intl and requirements + apt-get install -yqq zlib1g-dev libicu-dev g++ && \ + docker-php-ext-configure intl && \ + docker-php-ext-install intl \ + ;fi ########################################################################### # GHOSTSCRIPT: @@ -709,12 +714,12 @@ RUN if [ ${INSTALL_INTL} = true ]; then \ ARG INSTALL_GHOSTSCRIPT=false RUN if [ ${INSTALL_GHOSTSCRIPT} = true ]; then \ - # Install the ghostscript extension - # for PDF editing - apt-get install -yqq \ - poppler-utils \ - ghostscript \ -;fi + # Install the ghostscript extension + # for PDF editing + apt-get install -yqq \ + poppler-utils \ + ghostscript \ + ;fi ########################################################################### # LDAP: @@ -723,11 +728,11 @@ RUN if [ ${INSTALL_GHOSTSCRIPT} = true ]; then \ ARG INSTALL_LDAP=false RUN if [ ${INSTALL_LDAP} = true ]; then \ - apt-get install -yqq libldap2-dev && \ - ARCH=$(arch) && \ - docker-php-ext-configure ldap --with-libdir="lib/${ARCH}-linux-gnu/" && \ - docker-php-ext-install ldap \ -;fi + apt-get install -yqq libldap2-dev && \ + ARCH=$(arch) && \ + docker-php-ext-configure ldap --with-libdir="lib/${ARCH}-linux-gnu/" && \ + docker-php-ext-install ldap \ + ;fi ########################################################################### # SQL SERVER: @@ -737,39 +742,47 @@ ARG INSTALL_MSSQL=false RUN set -eux; \ if [ ${INSTALL_MSSQL} = true ]; then \ - if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ - apt-get -yqq install freetds-dev libsybdb5 \ - && ln -s /usr/lib/x86_64-linux-gnu/libsybdb.so /usr/lib/libsybdb.so \ - && docker-php-ext-install mssql pdo_dblib \ - && php -m | grep -oiE '^mssql$' \ - && php -m | grep -oiE '^pdo_dblib$' \ - ;else \ - ########################################################################### - # Ref from https://github.com/Microsoft/msphpsql/wiki/Dockerfile-for-adding-pdo_sqlsrv-and-sqlsrv-to-official-php-image - ########################################################################### - # Add Microsoft repo for Microsoft ODBC Driver 13 for Linux \ - apt-get update \ - && apt-get install -yqq apt-transport-https gnupg lsb-release \ - && curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - \ - && curl https://packages.microsoft.com/config/debian/$(lsb_release -rs)/prod.list > /etc/apt/sources.list.d/mssql-release.list \ - && apt-get update -yqq \ - && ACCEPT_EULA=Y apt-get install -yqq unixodbc unixodbc-dev libgss3 odbcinst msodbcsql17 locales \ - && echo "en_US.UTF-8 UTF-8" > /etc/locale.gen \ - && ln -sfn /etc/locale.alias /usr/share/locale/locale.alias \ - && locale-gen \ - && if [ $(php -r "echo PHP_VERSION_ID - PHP_RELEASE_VERSION;") = "70000" ]; then \ - pecl install pdo_sqlsrv-5.3.0 sqlsrv-5.3.0 \ - ;elif [ $(php -r "echo PHP_VERSION_ID - PHP_RELEASE_VERSION;") = "70100" ]; then \ - pecl install pdo_sqlsrv-5.6.1 sqlsrv-5.6.1 \ - ;elif [ $(php -r "echo PHP_VERSION_ID - PHP_RELEASE_VERSION;") = "70200" ]; then \ - pecl install pdo_sqlsrv-5.8.1 sqlsrv-5.8.1 \ - ;else \ - pecl install pdo_sqlsrv sqlsrv \ - ;fi \ - && docker-php-ext-enable pdo_sqlsrv sqlsrv \ - && php -m | grep -oiE '^pdo_sqlsrv$' \ - && php -m | grep -oiE '^sqlsrv$' \ - ;fi \ + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ + apt-get -yqq install freetds-dev libsybdb5 \ + && ln -s /usr/lib/x86_64-linux-gnu/libsybdb.so /usr/lib/libsybdb.so \ + && docker-php-ext-install mssql pdo_dblib \ + && php -m | grep -oiE '^mssql$' \ + && php -m | grep -oiE '^pdo_dblib$' \ + ;else \ + ########################################################################### + # Ref from https://github.com/Microsoft/msphpsql/wiki/Dockerfile-for-adding-pdo_sqlsrv-and-sqlsrv-to-official-php-image + ########################################################################### + # Add Microsoft repo for Microsoft ODBC Driver 13 for Linux \ + apt-get update \ + && apt-get install -yqq apt-transport-https gnupg lsb-release \ + && if [ ${LARADOCK_PHP_VERSION} = "8.1" ] || [ ${LARADOCK_PHP_VERSION} = "8.2" ]; then \ + curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor -o /usr/share/keyrings/microsoft-prod.gpg \ + ;else \ + curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - \ + ;fi \ + && curl https://packages.microsoft.com/config/debian/$(lsb_release -rs)/prod.list > /etc/apt/sources.list.d/mssql-release.list \ + && apt-get update -yqq \ + && ACCEPT_EULA=Y apt-get install -yqq unixodbc unixodbc-dev libgss3 odbcinst msodbcsql18 locales \ + && echo "en_US.UTF-8 UTF-8" > /etc/locale.gen \ + && ln -sfn /etc/locale.alias /usr/share/locale/locale.alias \ + && locale-gen \ + && if [ $(php -r "echo PHP_VERSION_ID - PHP_RELEASE_VERSION;") = "70000" ]; then \ + pecl install pdo_sqlsrv-5.3.0 sqlsrv-5.3.0 \ + ;elif [ $(php -r "echo PHP_VERSION_ID - PHP_RELEASE_VERSION;") = "70100" ]; then \ + pecl install pdo_sqlsrv-5.6.1 sqlsrv-5.6.1 \ + ;elif [ $(php -r "echo PHP_VERSION_ID - PHP_RELEASE_VERSION;") = "70200" ]; then \ + pecl install pdo_sqlsrv-5.8.1 sqlsrv-5.8.1 \ + ;elif [ $(php -r "echo PHP_VERSION_ID - PHP_RELEASE_VERSION;") = "70300" ]; then \ + pecl install pdo_sqlsrv-5.9.0 sqlsrv-5.9.0 \ + ;elif [ $(php -r "echo PHP_VERSION_ID - PHP_RELEASE_VERSION;") = "70400" ]; then \ + pecl install pdo_sqlsrv-5.10.1 sqlsrv-5.10.1 \ + ;else \ + pecl install pdo_sqlsrv sqlsrv \ + ;fi \ + && docker-php-ext-enable pdo_sqlsrv sqlsrv \ + && php -m | grep -oiE '^pdo_sqlsrv$' \ + && php -m | grep -oiE '^sqlsrv$' \ + ;fi \ ;fi ########################################################################### @@ -781,8 +794,8 @@ USER root ARG INSTALL_IMAGE_OPTIMIZERS=false RUN if [ ${INSTALL_IMAGE_OPTIMIZERS} = true ]; then \ - apt-get install -yqq jpegoptim optipng pngquant gifsicle \ -;fi + apt-get install -yqq jpegoptim optipng pngquant gifsicle \ + ;fi ########################################################################### # ImageMagick: @@ -795,26 +808,27 @@ ARG IMAGEMAGICK_VERSION=latest ENV IMAGEMAGICK_VERSION ${IMAGEMAGICK_VERSION} RUN if [ ${INSTALL_IMAGEMAGICK} = true ]; then \ - apt-get install -yqq libmagickwand-dev imagemagick && \ - if [ $(php -r "echo PHP_MAJOR_VERSION;") = "8" ]; then \ - cd /tmp && \ - if [ ${IMAGEMAGICK_VERSION} = "latest" ]; then \ - git clone https://github.com/Imagick/imagick; \ - else \ - git clone --branch ${IMAGEMAGICK_VERSION} https://github.com/Imagick/imagick; \ - fi && \ - cd imagick && \ - phpize && \ - ./configure && \ - make && \ - make install && \ - rm -r /tmp/imagick; \ - else \ - pecl install imagick; \ - fi && \ - docker-php-ext-enable imagick; \ - php -m | grep -q 'imagick' \ -;fi + apt-get update && \ + apt-get install -yqq libmagickwand-dev imagemagick && \ + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "8" ]; then \ + cd /tmp && \ + if [ ${IMAGEMAGICK_VERSION} = "latest" ]; then \ + git clone https://github.com/Imagick/imagick; \ + else \ + git clone --branch ${IMAGEMAGICK_VERSION} https://github.com/Imagick/imagick; \ + fi && \ + cd imagick && \ + phpize && \ + ./configure && \ + make && \ + make install && \ + rm -r /tmp/imagick; \ + else \ + pecl install imagick; \ + fi && \ + docker-php-ext-enable imagick; \ + php -m | grep -q 'imagick' \ + ;fi ########################################################################### # SMB: @@ -823,10 +837,10 @@ RUN if [ ${INSTALL_IMAGEMAGICK} = true ]; then \ ARG INSTALL_SMB=false RUN if [ ${INSTALL_SMB} = true ]; then \ - apt-get install -yqq smbclient libsmbclient-dev coreutils && \ - pecl install smbclient && \ - docker-php-ext-enable smbclient \ -;fi + apt-get install -yqq smbclient libsmbclient-dev coreutils && \ + pecl install smbclient && \ + docker-php-ext-enable smbclient \ + ;fi ########################################################################### # IMAP: @@ -835,10 +849,10 @@ RUN if [ ${INSTALL_SMB} = true ]; then \ ARG INSTALL_IMAP=false RUN if [ ${INSTALL_IMAP} = true ]; then \ - apt-get install -yqq libc-client-dev libkrb5-dev && \ - docker-php-ext-configure imap --with-kerberos --with-imap-ssl && \ - docker-php-ext-install imap \ -;fi + apt-get install -yqq libc-client-dev libkrb5-dev && \ + docker-php-ext-configure imap --with-kerberos --with-imap-ssl && \ + docker-php-ext-install imap \ + ;fi ########################################################################### # Calendar: @@ -849,9 +863,9 @@ USER root ARG INSTALL_CALENDAR=false RUN if [ ${INSTALL_CALENDAR} = true ]; then \ - docker-php-ext-configure calendar && \ - docker-php-ext-install calendar \ -;fi + docker-php-ext-configure calendar && \ + docker-php-ext-install calendar \ + ;fi ########################################################################### # Phalcon: @@ -862,11 +876,11 @@ ARG LARADOCK_PHALCON_VERSION ENV LARADOCK_PHALCON_VERSION ${LARADOCK_PHALCON_VERSION} RUN if [ $INSTALL_PHALCON = true ]; then \ - apt-get update -yqq \ - && pecl channel-update pecl.php.net \ - && apt-get install -yqq libpcre3-dev; \ - pecl install phalcon-${LARADOCK_PHALCON_VERSION}; \ - docker-php-ext-enable phalcon \ + apt-get update -yqq \ + && pecl channel-update pecl.php.net \ + && apt-get install -yqq libpcre3-dev; \ + pecl install phalcon-${LARADOCK_PHALCON_VERSION}; \ + docker-php-ext-enable phalcon \ ;fi ########################################################################### @@ -876,13 +890,13 @@ RUN if [ $INSTALL_PHALCON = true ]; then \ ARG INSTALL_APCU=false RUN if [ ${INSTALL_APCU} = true ]; then \ - if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ - pecl install -a apcu-4.0.11; \ - else \ - pecl install apcu; \ - fi && \ - docker-php-ext-enable apcu \ -;fi + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ + pecl install -a apcu-4.0.11; \ + else \ + pecl install apcu; \ + fi && \ + docker-php-ext-enable apcu \ + ;fi ########################################################################### # YAML: @@ -893,16 +907,16 @@ USER root ARG INSTALL_YAML=false RUN if [ ${INSTALL_YAML} = true ]; then \ - apt-get install -yqq libyaml-dev; \ - if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ - echo '' | pecl install -a yaml-1.3.2; \ - elif [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ] && [ $(php -r "echo PHP_MINOR_VERSION;") = "0" ]; then \ - echo '' | pecl install yaml-2.0.4; \ - else \ - echo '' | pecl install yaml; \ - fi \ - && docker-php-ext-enable yaml \ -;fi + apt-get install -yqq libyaml-dev; \ + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ + echo '' | pecl install -a yaml-1.3.2; \ + elif [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ] && [ $(php -r "echo PHP_MINOR_VERSION;") = "0" ]; then \ + echo '' | pecl install yaml-2.0.4; \ + else \ + echo '' | pecl install yaml; \ + fi \ + && docker-php-ext-enable yaml \ + ;fi ########################################################################### # RDKAFKA: @@ -911,10 +925,10 @@ RUN if [ ${INSTALL_YAML} = true ]; then \ ARG INSTALL_RDKAFKA=false RUN if [ ${INSTALL_RDKAFKA} = true ]; then \ - apt-get install -yqq librdkafka-dev && \ - pecl install rdkafka && \ - docker-php-ext-enable rdkafka \ -;fi + apt-get install -yqq librdkafka-dev && \ + pecl install rdkafka && \ + docker-php-ext-enable rdkafka \ + ;fi ########################################################################### # GETTEXT: @@ -923,9 +937,9 @@ RUN if [ ${INSTALL_RDKAFKA} = true ]; then \ ARG INSTALL_GETTEXT=false RUN if [ ${INSTALL_GETTEXT} = true ]; then \ - apt-get install -yqq zlib1g-dev libicu-dev g++ libpq-dev libssl-dev gettext && \ - docker-php-ext-install gettext \ -;fi + apt-get install -yqq zlib1g-dev libicu-dev g++ libpq-dev libssl-dev gettext && \ + docker-php-ext-install gettext \ + ;fi ########################################################################### # Install additional locales: @@ -935,13 +949,13 @@ ARG INSTALL_ADDITIONAL_LOCALES=false ARG ADDITIONAL_LOCALES RUN if [ ${INSTALL_ADDITIONAL_LOCALES} = true ]; then \ - apt-get install -yqq locales \ - && echo '' >> /usr/share/locale/locale.alias \ - && temp="${ADDITIONAL_LOCALES%\"}" \ - && temp="${temp#\"}" \ - && for i in ${temp}; do sed -i "/$i/s/^#//g" /etc/locale.gen; done \ - && locale-gen \ -;fi + apt-get install -yqq locales \ + && echo '' >> /usr/share/locale/locale.alias \ + && temp="${ADDITIONAL_LOCALES%\"}" \ + && temp="${temp#\"}" \ + && for i in ${temp}; do sed -i "/$i/s/^#//g" /etc/locale.gen; done \ + && locale-gen \ + ;fi ########################################################################### # MySQL Client: @@ -952,8 +966,8 @@ USER root ARG INSTALL_MYSQL_CLIENT=false RUN if [ ${INSTALL_MYSQL_CLIENT} = true ]; then \ - apt-get -y install default-mysql-client \ -;fi + apt-get -y install default-mysql-client \ + ;fi ########################################################################### # ping: @@ -964,8 +978,8 @@ USER root ARG INSTALL_PING=false RUN if [ ${INSTALL_PING} = true ]; then \ - apt-get -y install inetutils-ping \ -;fi + apt-get -y install inetutils-ping \ + ;fi ########################################################################### # sshpass: @@ -976,8 +990,8 @@ USER root ARG INSTALL_SSHPASS=false RUN if [ ${INSTALL_SSHPASS} = true ]; then \ - apt-get -y install sshpass \ -;fi + apt-get -y install sshpass \ + ;fi ########################################################################### # Docker Client: @@ -988,11 +1002,11 @@ USER root ARG INSTALL_DOCKER_CLIENT=false RUN if [ ${INSTALL_DOCKER_CLIENT} = true ]; then \ - curl -sS https://download.docker.com/linux/static/stable/x86_64/docker-20.10.3.tgz -o /tmp/docker.tar.gz && \ - tar -xzf /tmp/docker.tar.gz -C /tmp/ && \ - cp /tmp/docker/docker* /usr/local/bin && \ - chmod +x /usr/local/bin/docker* \ -;fi + curl -sS https://download.docker.com/linux/static/stable/x86_64/docker-20.10.3.tgz -o /tmp/docker.tar.gz && \ + tar -xzf /tmp/docker.tar.gz -C /tmp/ && \ + cp /tmp/docker/docker* /usr/local/bin && \ + chmod +x /usr/local/bin/docker* \ + ;fi ########################################################################### # FFMPEG: @@ -1003,8 +1017,9 @@ USER root ARG INSTALL_FFMPEG=false RUN if [ ${INSTALL_FFMPEG} = true ]; then \ - apt-get -y install ffmpeg \ -;fi + apt-get update -y && \ + apt-get -y install ffmpeg \ + ;fi ########################################################################### # BBC Audio Waveform Image Generator: @@ -1015,18 +1030,28 @@ USER root ARG INSTALL_AUDIOWAVEFORM=false RUN if [ ${INSTALL_AUDIOWAVEFORM} = true ]; then \ - apt-get -y install wget make cmake gcc g++ libmad0-dev libid3tag0-dev libsndfile1-dev libgd-dev libboost-filesystem-dev libboost-program-options-dev libboost-regex-dev \ - && cd /tmp \ - && git clone https://github.com/bbc/audiowaveform.git \ - && cd audiowaveform \ - && git clone --depth=1 https://github.com/google/googletest.git -b release-1.11.0 \ - && mkdir build \ - && cd build \ - && cmake .. \ - && make \ - && make install \ -;fi + apt-get -y install wget make cmake gcc g++ libmad0-dev libid3tag0-dev libsndfile1-dev libgd-dev libboost-filesystem-dev libboost-program-options-dev libboost-regex-dev \ + && cd /tmp \ + && git clone https://github.com/bbc/audiowaveform.git \ + && cd audiowaveform \ + && git clone --depth=1 https://github.com/google/googletest.git -b release-1.11.0 \ + && mkdir build \ + && cd build \ + && cmake .. \ + && make \ + && make install \ + ;fi +##################################### +# poppler-utils: +##################################### +USER root + +ARG INSTALL_POPPLER_UTILS=false + +RUN if [ ${INSTALL_POPPLER_UTILS} = true ]; then \ + apt-get -y install poppler-utils antiword \ + ;fi ##################################### # wkhtmltopdf: @@ -1035,25 +1060,40 @@ RUN if [ ${INSTALL_AUDIOWAVEFORM} = true ]; then \ USER root ARG INSTALL_WKHTMLTOPDF=false -ARG WKHTMLTOPDF_VERSION=0.12.6-1 +ARG WKHTMLTOPDF_VERSION=0.12.6.1-3 RUN if [ ${INSTALL_WKHTMLTOPDF} = true ]; then \ - ARCH=$(arch | sed s/aarch64/arm64/ | sed s/x86_64/amd64/) \ - && apt-get install -yqq \ - libxrender1 \ - libfontconfig1 \ - libx11-dev \ - libjpeg62 \ - libxtst6 \ - fontconfig \ - libjpeg62-turbo \ - xfonts-base \ - xfonts-75dpi \ - wget \ - && wget "https://github.com/wkhtmltopdf/packaging/releases/download/${WKHTMLTOPDF_VERSION}/wkhtmltox_0.12.6-1.stretch_${ARCH}.deb" \ - && dpkg -i "wkhtmltox_${WKHTMLTOPDF_VERSION}.stretch_${ARCH}.deb" \ - && apt -f install \ -;fi + ARCH=$(arch | sed s/aarch64/arm64/ | sed s/x86_64/amd64/) \ + && apt-get install -yqq \ + libxrender1 \ + libfontconfig1 \ + libx11-dev \ + libjpeg62 \ + libxtst6 \ + fontconfig \ + libjpeg62-turbo \ + xfonts-base \ + xfonts-75dpi \ + wget \ + # && cat /etc/os-release \ + && if [ ${LARADOCK_PHP_VERSION} = "5.6" ] || \ + [ ${LARADOCK_PHP_VERSION} = "7.0" ]; then \ + wget "https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox_0.12.6-1.stretch_${ARCH}.deb"; \ + dpkg -i "wkhtmltox_0.12.6-1.stretch_${ARCH}.deb"; \ + elif [ ${LARADOCK_PHP_VERSION} = "7.1" ] || \ + [ ${LARADOCK_PHP_VERSION} = "7.2" ] || \ + [ ${LARADOCK_PHP_VERSION} = "7.3" ] || \ + [ ${LARADOCK_PHP_VERSION} = "7.4" ]; then \ + wget "https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox_0.12.6-1.buster_${ARCH}.deb"; \ + dpkg -i "wkhtmltox_0.12.6-1.buster_${ARCH}.deb"; \ + elif [ ${LARADOCK_PHP_VERSION} = "8.0" ]; then \ + wget "https://github.com/wkhtmltopdf/packaging/releases/download/${WKHTMLTOPDF_VERSION}/wkhtmltox_${WKHTMLTOPDF_VERSION}.bullseye_${ARCH}.deb"; \ + dpkg -i "wkhtmltox_${WKHTMLTOPDF_VERSION}.bullseye_${ARCH}.deb"; \ + else \ + wget "https://github.com/wkhtmltopdf/packaging/releases/download/${WKHTMLTOPDF_VERSION}/wkhtmltox_${WKHTMLTOPDF_VERSION}.bookworm_${ARCH}.deb"; \ + dpkg -i "wkhtmltox_${WKHTMLTOPDF_VERSION}.bookworm_${ARCH}.deb"; \ + fi \ + ;fi ##################################### # trader: @@ -1064,9 +1104,9 @@ USER root ARG INSTALL_TRADER=false RUN if [ ${INSTALL_TRADER} = true ]; then \ - pecl install trader \ - && echo "extension=trader.so" >> $PHP_INI_DIR/conf.d/trader.ini \ -;fi + pecl install trader \ + && echo "extension=trader.so" >> $PHP_INI_DIR/conf.d/trader.ini \ + ;fi ########################################################################### # Mailparse extension: @@ -1075,11 +1115,11 @@ RUN if [ ${INSTALL_TRADER} = true ]; then \ ARG INSTALL_MAILPARSE=false RUN if [ ${INSTALL_MAILPARSE} = true ]; then \ - # Install mailparse extension - printf "\n" | pecl install -o -f mailparse \ - && rm -rf /tmp/pear \ - && docker-php-ext-enable mailparse \ -;fi + # Install mailparse extension + printf "\n" | pecl install -o -f mailparse \ + && rm -rf /tmp/pear \ + && docker-php-ext-enable mailparse \ + ;fi ########################################################################### # CacheTool: @@ -1088,14 +1128,14 @@ RUN if [ ${INSTALL_MAILPARSE} = true ]; then \ ARG INSTALL_CACHETOOL=false RUN if [ ${INSTALL_CACHETOOL} = true ]; then \ - if [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ] && [ $(php -r "echo PHP_MINOR_VERSION;") -ge 1 ]; then \ - curl -sO http://gordalina.github.io/cachetool/downloads/cachetool.phar; \ - else \ - curl http://gordalina.github.io/cachetool/downloads/cachetool-3.2.1.phar -o cachetool.phar; \ - fi && \ - chmod +x cachetool.phar && \ - mv cachetool.phar /usr/local/bin/cachetool \ -;fi + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ] && [ $(php -r "echo PHP_MINOR_VERSION;") -ge 1 ]; then \ + curl -sO https://gordalina.github.io/cachetool/downloads/cachetool.phar; \ + else \ + curl https://gordalina.github.io/cachetool/downloads/cachetool-3.2.1.phar -o cachetool.phar; \ + fi && \ + chmod +x cachetool.phar && \ + mv cachetool.phar /usr/local/bin/cachetool \ + ;fi ########################################################################### # XMLRPC: @@ -1106,12 +1146,12 @@ ARG INSTALL_XMLRPC=false RUN if [ ${INSTALL_XMLRPC} = true ]; then \ apt-get -yq install libxml2-dev; \ if [ $(php -r "echo PHP_MAJOR_VERSION;") = "8" ]; then \ - pecl install xmlrpc-1.0.0RC3; \ - docker-php-ext-enable xmlrpc; \ + pecl install xmlrpc-1.0.0RC3; \ + docker-php-ext-enable xmlrpc; \ else \ - docker-php-ext-install xmlrpc; \ + docker-php-ext-install xmlrpc; \ fi \ -;fi + ;fi ########################################################################### # PHP DECIMAL: @@ -1122,15 +1162,24 @@ USER root ARG INSTALL_PHPDECIMAL=false RUN if [ ${INSTALL_PHPDECIMAL} = true ]; then \ - if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ - echo 'decimal not support PHP 5.6'; \ - else \ - apt-get install -yqq libmpdec-dev \ - && pecl install decimal \ - && docker-php-ext-enable decimal \ - && php -m | grep -q 'decimal' \ - ;fi \ -;fi + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ + echo 'decimal not support PHP 5.6'; \ + else \ + if [ ${LARADOCK_PHP_VERSION} = "8.1" ] || \ + [ ${LARADOCK_PHP_VERSION} = "8.2" ]; then \ + curl -L -o /tmp/mpdecimal.tar.gz "https://www.bytereef.org/software/mpdecimal/releases/mpdecimal-2.5.1.tar.gz"; \ + mkdir -p /tmp/mpdecimal; \ + tar -C /tmp/mpdecimal -zxvf /tmp/mpdecimal.tar.gz --strip 1; \ + cd /tmp/mpdecimal; \ + ./configure && make && make install; \ + else \ + apt-get install -yqq libmpdec-dev; \ + fi; \ + pecl install decimal; \ + docker-php-ext-enable decimal; \ + php -m | grep -oiE '^decimal$'; \ + fi; \ + fi ########################################################################### # zookeeper @@ -1138,24 +1187,24 @@ RUN if [ ${INSTALL_PHPDECIMAL} = true ]; then \ ARG INSTALL_ZOOKEEPER=false RUN set -eux; \ - if [ ${INSTALL_ZOOKEEPER} = true ]; then \ - apt install -yqq libzookeeper-mt-dev; \ - if [ $(php -r "echo PHP_MAJOR_VERSION;") = "8" ]; then \ - curl -L -o /tmp/php-zookeeper.tar.gz https://github.com/php-zookeeper/php-zookeeper/archive/master.tar.gz; \ - mkdir -p /tmp/php-zookeeper; \ - tar -C /tmp/php-zookeeper -zxvf /tmp/php-zookeeper.tar.gz --strip 1; \ - cd /tmp/php-zookeeper; \ - phpize && ./configure && make && make install;\ - else \ - if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ - pecl install zookeeper-0.5.0; \ - else \ - pecl install zookeeper-0.7.2; \ - fi; \ - fi; \ - docker-php-ext-enable zookeeper; \ - php -m | grep -q 'zookeeper'; \ - fi + if [ ${INSTALL_ZOOKEEPER} = true ]; then \ + apt install -yqq libzookeeper-mt-dev; \ + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "8" ]; then \ + curl -L -o /tmp/php-zookeeper.tar.gz https://github.com/php-zookeeper/php-zookeeper/archive/master.tar.gz; \ + mkdir -p /tmp/php-zookeeper; \ + tar -C /tmp/php-zookeeper -zxvf /tmp/php-zookeeper.tar.gz --strip 1; \ + cd /tmp/php-zookeeper; \ + phpize && ./configure && make && make install;\ + else \ + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ + pecl install zookeeper-0.5.0; \ + else \ + pecl install zookeeper-0.7.2; \ + fi; \ + fi; \ + docker-php-ext-enable zookeeper; \ + php -m | grep -q 'zookeeper'; \ + fi ########################################################################### # New Relic for PHP: @@ -1176,7 +1225,7 @@ RUN if [ ${NEW_RELIC} = true ]; then \ -e 's/;newrelic.daemon.app_connect_timeout =.*/newrelic.daemon.app_connect_timeout=15s/' \ -e 's/;newrelic.daemon.start_timeout =.*/newrelic.daemon.start_timeout=5s/' \ /usr/local/etc/php/conf.d/newrelic.ini \ -;fi + ;fi ########################################################################### # PHP SSDB: @@ -1187,23 +1236,23 @@ USER root ARG INSTALL_SSDB=false RUN set -xe; \ - if [ ${INSTALL_SSDB} = true ] && [ $(php -r "echo PHP_MAJOR_VERSION;") != "8" ]; then \ - apt-get -y install sudo wget && \ - if [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ]; then \ - curl -L -o /tmp/ssdb-client-php.tar.gz https://github.com/jonnywang/phpssdb/archive/php7.tar.gz; \ - else \ - curl -L -o /tmp/ssdb-client-php.tar.gz https://github.com/jonnywang/phpssdb/archive/master.tar.gz; \ - fi \ - && mkdir -p /tmp/ssdb-client-php \ - && tar -C /tmp/ssdb-client-php -zxvf /tmp/ssdb-client-php.tar.gz --strip 1 \ - && cd /tmp/ssdb-client-php \ - && phpize \ - && ./configure \ - && make \ - && make install \ - && rm /tmp/ssdb-client-php.tar.gz \ - && docker-php-ext-enable ssdb \ -;fi + if [ ${INSTALL_SSDB} = true ] && [ $(php -r "echo PHP_MAJOR_VERSION;") != "8" ]; then \ + apt-get -y install sudo wget && \ + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ]; then \ + curl -L -o /tmp/ssdb-client-php.tar.gz https://github.com/jonnywang/phpssdb/archive/php7.tar.gz; \ + else \ + curl -L -o /tmp/ssdb-client-php.tar.gz https://github.com/jonnywang/phpssdb/archive/master.tar.gz; \ + fi \ + && mkdir -p /tmp/ssdb-client-php \ + && tar -C /tmp/ssdb-client-php -zxvf /tmp/ssdb-client-php.tar.gz --strip 1 \ + && cd /tmp/ssdb-client-php \ + && phpize \ + && ./configure \ + && make \ + && make install \ + && rm /tmp/ssdb-client-php.tar.gz \ + && docker-php-ext-enable ssdb \ + ;fi ########################################################################### # Downgrade Openssl: ########################################################################### @@ -1212,10 +1261,10 @@ ARG DOWNGRADE_OPENSSL_TLS_AND_SECLEVEL=false ARG DOWNGRADE_OPENSSL_TLS_VERSION=1.2 RUN if [ ${DOWNGRADE_OPENSSL_TLS_AND_SECLEVEL} = true ]; then \ - sed -i 's,^\(MinProtocol[ ]*=\).*,\1'TLSv${DOWNGRADE_OPENSSL_TLS_VERSION}',g' /etc/ssl/openssl.cnf \ - && \ - sed -i 's,^\(CipherString[ ]*=\).*,\1'DEFAULT@SECLEVEL=1',g' /etc/ssl/openssl.cnf\ -;fi + sed -i 's,^\(MinProtocol[ ]*=\).*,\1'TLSv${DOWNGRADE_OPENSSL_TLS_VERSION}',g' /etc/ssl/openssl.cnf \ + && \ + sed -i 's,^\(CipherString[ ]*=\).*,\1'DEFAULT@SECLEVEL=1',g' /etc/ssl/openssl.cnf\ + ;fi ########################################################################### # zmq @@ -1226,17 +1275,17 @@ USER root ARG INSTALL_ZMQ=false RUN if [ ${INSTALL_ZMQ} = true ]; then \ - apt-get install --yes git libzmq3-dev \ - && git clone https://github.com/zeromq/php-zmq.git \ - && cd php-zmq \ - && phpize \ - && ./configure \ - && make \ - && make install \ - && cd .. \ - && rm -fr php-zmq \ - && echo "extension=zmq.so" > /usr/local/etc/php/conf.d/zmq.ini \ -;fi + apt-get install --yes git libzmq3-dev \ + && git clone https://github.com/zeromq/php-zmq.git \ + && cd php-zmq \ + && phpize \ + && ./configure \ + && make \ + && make install \ + && cd .. \ + && rm -fr php-zmq \ + && echo "extension=zmq.so" > /usr/local/etc/php/conf.d/zmq.ini \ + ;fi ############################################################################ @@ -1248,27 +1297,27 @@ ARG INSTALL_EVENT=false RUN set -eux; \ if [ ${INSTALL_EVENT} = true ]; then \ - curl -L -o /tmp/libevent.tar.gz https://github.com/libevent/libevent/releases/download/release-2.1.12-stable/libevent-2.1.12-stable.tar.gz &&\ - mkdir -p /tmp/libevent-php &&\ - tar -C /tmp/libevent-php -zxvf /tmp/libevent.tar.gz --strip 1 &&\ - cd /tmp/libevent-php &&\ - ./configure --prefix=/usr/local/libevent-2.1.12 &&\ - make &&\ - make install &&\ - rm /tmp/libevent.tar.gz &&\ - docker-php-ext-install sockets &&\ - curl -L -o /tmp/event.tar.gz http://pecl.php.net/get/event-3.0.6.tgz &&\ - mkdir -p /tmp/event-php &&\ - tar -C /tmp/event-php -zxvf /tmp/event.tar.gz --strip 1 &&\ - cd /tmp/event-php &&\ - phpize &&\ - ./configure --with-event-libevent-dir=/usr/local/libevent-2.1.12/ &&\ - make &&\ - make install &&\ - rm /tmp/event.tar.gz &&\ - docker-php-ext-enable event &&\ - php -m | grep -q 'event' \ -;fi + curl -L -o /tmp/libevent.tar.gz https://github.com/libevent/libevent/releases/download/release-2.1.12-stable/libevent-2.1.12-stable.tar.gz &&\ + mkdir -p /tmp/libevent-php &&\ + tar -C /tmp/libevent-php -zxvf /tmp/libevent.tar.gz --strip 1 &&\ + cd /tmp/libevent-php &&\ + ./configure --prefix=/usr/local/libevent-2.1.12 &&\ + make &&\ + make install &&\ + rm /tmp/libevent.tar.gz &&\ + docker-php-ext-install sockets &&\ + curl -L -o /tmp/event.tar.gz http://pecl.php.net/get/event-3.0.6.tgz &&\ + mkdir -p /tmp/event-php &&\ + tar -C /tmp/event-php -zxvf /tmp/event.tar.gz --strip 1 &&\ + cd /tmp/event-php &&\ + phpize &&\ + ./configure --with-event-libevent-dir=/usr/local/libevent-2.1.12/ &&\ + make &&\ + make install &&\ + rm /tmp/event.tar.gz &&\ + docker-php-ext-enable event &&\ + php -m | grep -q 'event' \ + ;fi ########################################################################### # DNS utilities: @@ -1279,8 +1328,8 @@ USER root ARG INSTALL_DNSUTILS=false RUN if [ ${INSTALL_DNSUTILS} = true ]; then \ - apt-get update && apt-get install -y dnsutils \ -;fi + apt-get update && apt-get install -y dnsutils \ + ;fi ########################################################################### # Check PHP version: @@ -1301,8 +1350,8 @@ USER root # Clean up RUN apt-get clean && \ - rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* && \ - rm /var/log/lastlog /var/log/faillog + rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* && \ + rm -f /var/log/lastlog /var/log/faillog # Configure non-root user. ARG PUID=1000 @@ -1311,13 +1360,13 @@ ARG PGID=1000 ENV PGID ${PGID} RUN groupmod -o -g ${PGID} www-data && \ - usermod -o -u ${PUID} -g www-data www-data + usermod -o -u ${PUID} -g www-data www-data # Adding the faketime library to the preload file needs to be done last # otherwise it will preload it for all commands that follow in this file RUN if [ ${INSTALL_FAKETIME} = true ]; then \ - echo "/usr/lib/x86_64-linux-gnu/faketime/libfaketime.so.1" > /etc/ld.so.preload \ -;fi + echo "/usr/lib/x86_64-linux-gnu/faketime/libfaketime.so.1" > /etc/ld.so.preload \ + ;fi # Configure locale. ARG LOCALE=POSIX diff --git a/docker/php-fpm/apt_sources/php.list b/docker/php-fpm/apt_sources/php.list index de1ffd1e..ea71ac7a 100644 --- a/docker/php-fpm/apt_sources/php.list +++ b/docker/php-fpm/apt_sources/php.list @@ -1 +1 @@ -deb https://packages.sury.org/php/ bullseye main +deb https://packages.sury.org/php/ bullseye main diff --git a/docker/phpmyadmin/Dockerfile b/docker/phpmyadmin/Dockerfile new file mode 100755 index 00000000..42ac7e65 --- /dev/null +++ b/docker/phpmyadmin/Dockerfile @@ -0,0 +1,9 @@ +FROM phpmyadmin/phpmyadmin + +LABEL maintainer="Bo-Yi Wu " + +# Add volume for sessions to allow session persistence +VOLUME /sessions + +# We expose phpMyAdmin on port 80 +EXPOSE 80 diff --git a/docker/soketi/Dockerfile b/docker/soketi/Dockerfile new file mode 100755 index 00000000..20edbba9 --- /dev/null +++ b/docker/soketi/Dockerfile @@ -0,0 +1,7 @@ +FROM quay.io/soketi/soketi:latest + +LABEL maintainer="WuweiMing " + +CMD ["node /app/bin/server.js start"] + +EXPOSE 6001 9601 diff --git a/docker/workspace/Dockerfile b/docker/workspace/Dockerfile index 7fa4f069..3d48b849 100644 --- a/docker/workspace/Dockerfile +++ b/docker/workspace/Dockerfile @@ -23,24 +23,29 @@ RUN groupadd -g ${PGID} laradock; \ useradd -l -u ${PUID} -g laradock -m laradock; \ usermod -p "*" laradock -s /bin/bash; +ARG LARADOCK_PHP_VERSION + # always run apt update when start and after add new source list, then clean up at end. RUN apt-get update -yqq; \ apt-get upgrade -yqq; \ apt-get -yqq install --no-install-recommends apt-transport-https lsb-release tzdata ca-certificates curl wget \ apt-utils libzip-dev joe zip unzip rsync openssh-client git mc bzip2 nano default-mysql-client supervisor inetutils-ping mydumper \ - wkhtmltopdf ghostscript jpegoptim optipng pngquant gifsicle chromium chromium-sandbox + wkhtmltopdf ghostscript jpegoptim optipng pngquant gifsicle chromium chromium-sandbox poppler-utils graphviz COPY ./apt_sources/php.list /etc/apt/sources.list.d/php.list RUN wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg; + RUN apt-get update -yqq; \ - apt install -yqq --no-install-recommends php8.0-apcu php8.0-bcmath php8.0-bz2 php8.0-cli php8.0-common php8.0-curl php8.0-dev php8.0-gd php8.0-igbinary php8.0-imagick \ - php8.0-intl php8.0-mbstring php8.0-mcrypt php8.0-mysql php8.0-opcache php8.0-readline php8.0-redis php8.0-sqlite3 php8.0-tidy php8.0-uuid php8.0-xml php8.0-yaml php8.0-zip + apt install -yqq --no-install-recommends php${LARADOCK_PHP_VERSION}-apcu php${LARADOCK_PHP_VERSION}-bcmath php${LARADOCK_PHP_VERSION}-bz2 php${LARADOCK_PHP_VERSION}-cli php${LARADOCK_PHP_VERSION}-common php${LARADOCK_PHP_VERSION}-curl php${LARADOCK_PHP_VERSION}-dev php${LARADOCK_PHP_VERSION}-gd php${LARADOCK_PHP_VERSION}-igbinary php${LARADOCK_PHP_VERSION}-imagick \ + php${LARADOCK_PHP_VERSION}-intl php${LARADOCK_PHP_VERSION}-mbstring php${LARADOCK_PHP_VERSION}-mcrypt php${LARADOCK_PHP_VERSION}-mysql php${LARADOCK_PHP_VERSION}-opcache php${LARADOCK_PHP_VERSION}-readline php${LARADOCK_PHP_VERSION}-redis php${LARADOCK_PHP_VERSION}-sqlite3 php${LARADOCK_PHP_VERSION}-tidy php${LARADOCK_PHP_VERSION}-uuid php${LARADOCK_PHP_VERSION}-xml php${LARADOCK_PHP_VERSION}-yaml php${LARADOCK_PHP_VERSION}-zip -RUN apt-get install -yqq --no-install-recommends nodejs npm python2 +RUN apt-get install -yqq --no-install-recommends nodejs npm -RUN update-alternatives --install /usr/bin/python python /usr/bin/python2 1 +RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash + +# RUN update-alternatives --install /usr/bin/python python /usr/bin/python2 1 ########################################################################### # Set Timezone @@ -71,11 +76,11 @@ RUN echo "" >> ~/.bashrc && \ ARG COMPOSER_VERSION=2 ENV COMPOSER_VERSION ${COMPOSER_VERSION} RUN set -eux; \ - if [ "$COMPOSER_VERSION" = "1" ] || [ "$COMPOSER_VERSION" = "2" ]; then \ - composer self-update --${COMPOSER_VERSION}; \ - else \ - composer self-update ${COMPOSER_VERSION}; \ - fi + if [ "$COMPOSER_VERSION" = "1" ] || [ "$COMPOSER_VERSION" = "2" ]; then \ + composer self-update --${COMPOSER_VERSION}; \ + else \ + composer self-update ${COMPOSER_VERSION}; \ + fi USER laradock @@ -138,8 +143,8 @@ RUN if [ ${INSTALL_SUPERVISOR} = true ]; then \ echo_supervisord_conf > /etc/supervisord.conf && \ sed -i 's/\;\[include\]/\[include\]/g' /etc/supervisord.conf && \ sed -i 's/\;files\s.*/files = supervisord.d\/*.conf/g' /etc/supervisord.conf \ - ;fi \ -;fi + ;fi \ + ;fi ########################################################################### # GIT: @@ -153,11 +158,19 @@ RUN if [ ${INSTALL_SUPERVISOR} = true ]; then \ RUN npm install -g pm2 +########################################################################### +# NVM +########################################################################### +RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash +# RUN export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")" +# RUN [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm + ########################################################################### # Check PHP version: ########################################################################### -RUN set -xe; php -v | head -n 1 | grep -q "PHP 8.0." +# RUN php -v | head -n 1 | grep -q "PHP ${PHP_VERSION}." + # #-------------------------------------------------------------------------- @@ -178,3 +191,6 @@ RUN apt-get clean && \ WORKDIR /var/www USER laradock + +# RUN git config --global user.email "ludo@huma.net" \ +# git config --global user.name "Ludovic CANDELLIER" diff --git a/docker/workspace/apt_sources/php.list b/docker/workspace/apt_sources/php.list index de1ffd1e..729a51d7 100644 --- a/docker/workspace/apt_sources/php.list +++ b/docker/workspace/apt_sources/php.list @@ -1 +1 @@ -deb https://packages.sury.org/php/ bullseye main +deb https://packages.sury.org/php/ bookworm main