|
| 1 | +# syntax=docker/dockerfile:experimental |
| 2 | +FROM php:7.4-zts-buster AS build-parallel |
| 3 | +RUN apt-get update && \ |
| 4 | + yes | apt-get install $PHPIZE_DEPS git |
| 5 | +RUN git clone https://github.com/krakjoe/parallel |
| 6 | +WORKDIR /parallel |
| 7 | +RUN git fetch \ |
| 8 | + && git pull \ |
| 9 | + && phpize \ |
| 10 | + && ./configure \ |
| 11 | + && make install \ |
| 12 | + && EXTENSION_DIR=`php-config --extension-dir 2>/dev/null` && \ |
| 13 | + cp "$EXTENSION_DIR/parallel.so" /parallel.so |
| 14 | +RUN sha256sum /parallel.so |
| 15 | + |
| 16 | +FROM php:7.4-zts-buster AS build-uv |
| 17 | +RUN apt-get update && \ |
| 18 | + yes | apt-get install $PHPIZE_DEPS git libuv1-dev && \ |
| 19 | + git clone https://github.com/bwoebi/php-uv uv |
| 20 | +WORKDIR /uv |
| 21 | +RUN git fetch \ |
| 22 | + && git pull \ |
| 23 | + && phpize \ |
| 24 | + && ./configure \ |
| 25 | + && make install \ |
| 26 | + && EXTENSION_DIR=`php-config --extension-dir 2>/dev/null` && \ |
| 27 | + cp "$EXTENSION_DIR/uv.so" /uv.so |
| 28 | +RUN sha256sum /uv.so |
| 29 | + |
| 30 | +FROM php:7.4-zts-buster AS zts-root |
| 31 | + |
| 32 | +# Build-time metadata as defined at http://label-schema.org |
| 33 | +ARG BUILD_DATE |
| 34 | +ARG VCS_REF |
| 35 | +LABEL org.label-schema.build-date=$BUILD_DATE \ |
| 36 | + org.label-schema.name="wyrihaximusnet/php" \ |
| 37 | + org.label-schema.description="Opinionated ReactPHP optimised PHP Docker images" \ |
| 38 | + org.label-schema.url="https://github.com/wyrihaximusnet/docker-php" \ |
| 39 | + org.label-schema.vcs-ref=$VCS_REF \ |
| 40 | + org.label-schema.vcs-url="https://github.com/wyrihaximusnet/docker-php" \ |
| 41 | + org.label-schema.vendor="WyriHaximus.net" \ |
| 42 | + org.label-schema.schema-version="1.0" |
| 43 | + |
| 44 | +RUN set -x \ |
| 45 | + && addgroup --gid 1000 app \ |
| 46 | + && adduser --uid 1000 --gid 1000 --disabled-password app \ |
| 47 | + && touch /.you-are-in-a-wyrihaximus.net-php-docker-image |
| 48 | + |
| 49 | +COPY --from=build-parallel /parallel.so /parallel.so |
| 50 | +COPY --from=build-uv /uv.so /uv.so |
| 51 | + |
| 52 | +# Patch CVE-2018-14618 (curl), CVE-2018-16842 (libxml2), CVE-2019-1543 (openssl) |
| 53 | +RUN apt-get update && \ |
| 54 | + yes | apt-get upgrade curl libxml2 openssl |
| 55 | + |
| 56 | +# Install docker help scripts |
| 57 | +COPY src/php/utils/docker/debian/ /usr/local/bin/ |
| 58 | + |
| 59 | +COPY src/php/conf/ /usr/local/etc/php/conf.d/ |
| 60 | +COPY src/php/cli/conf/*.ini /usr/local/etc/php/conf.d/ |
| 61 | + |
| 62 | +RUN EXTENSION_DIR=`php-config --extension-dir 2>/dev/null` && \ |
| 63 | + mv /*.so "$EXTENSION_DIR/" && \ |
| 64 | + apt-get update && \ |
| 65 | + yes | apt-get upgrade && \ |
| 66 | + yes | apt-get install \ |
| 67 | + libfreetype6-dev \ |
| 68 | + libjpeg62-turbo-dev \ |
| 69 | + libpng-dev \ |
| 70 | + libgmp-dev \ |
| 71 | + zlib1g-dev \ |
| 72 | + libpq-dev \ |
| 73 | + libzip-dev \ |
| 74 | + libuv1-dev \ |
| 75 | + make \ |
| 76 | + git \ |
| 77 | + openssh-client \ |
| 78 | + bash \ |
| 79 | + coreutils \ |
| 80 | + procps \ |
| 81 | + libvips-dev \ |
| 82 | + git \ |
| 83 | + wget \ |
| 84 | + gdb \ |
| 85 | + $PHPIZE_DEPS \ |
| 86 | + && (docker-php-ext-configure gd --with-freetype=/usr/include/ --with-jpeg=/usr/include/ || docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/) \ |
| 87 | + && docker-php-ext-install -j$(nproc) gd pcntl pgsql pdo pdo_pgsql bcmath zip gmp iconv \ |
| 88 | + && pecl install vips \ |
| 89 | + && docker-php-ext-enable parallel \ |
| 90 | + && docker-php-ext-enable uv \ |
| 91 | + && docker-php-ext-enable vips \ |
| 92 | + && wget -O - https://raw.githubusercontent.com/vishnubob/wait-for-it/master/wait-for-it.sh > /bin/wait-for \ |
| 93 | + && yes | apt-get purge wget $PHPIZE_DEPS \ |
| 94 | + && chmod +x /bin/wait-for \ |
| 95 | + && rm -rf /var/cache/apk/* \ |
| 96 | + && rm -rf /tmp/* |
| 97 | + |
| 98 | +# Install shush |
| 99 | +COPY src/php/utils/install-shush /usr/local/bin/ |
| 100 | +RUN install-shush && rm -rf /usr/local/bin/install-shush |
| 101 | + |
| 102 | +STOPSIGNAL SIGTERM |
| 103 | + |
| 104 | +ENTRYPOINT ["/usr/local/bin/shush", "exec", "docker-php-entrypoint"] |
| 105 | + |
| 106 | +## ZTS-DEV STAGE ## |
| 107 | +FROM zts-root AS zts-dev-root |
| 108 | + |
| 109 | +RUN touch /.you-are-in-a-wyrihaximus.net-php-docker-image-dev |
| 110 | + |
| 111 | +# Install docker help scripts |
| 112 | +COPY src/php/utils/docker/ /usr/local/bin/ |
| 113 | + |
| 114 | +RUN apt-get update \ |
| 115 | + && yes | apt-get install \ |
| 116 | + make \ |
| 117 | + git \ |
| 118 | + openssh-client \ |
| 119 | + bash \ |
| 120 | + strace \ |
| 121 | +# Install Xdebug and development specific configuration |
| 122 | + && docker-php-dev-mode xdebug \ |
| 123 | + && docker-php-dev-mode config \ |
| 124 | +# Forcefully clear API cache |
| 125 | + && rm -rf /var/cache/apk/* |
| 126 | + |
| 127 | +# Install composer |
| 128 | +COPY src/php/utils/install-composer /usr/local/bin/ |
| 129 | +RUN apt-get update \ |
| 130 | + && yes | apt-get install wget \ |
| 131 | + && install-composer \ |
| 132 | + && yes | apt-get purge wget \ |
| 133 | + && rm -rf /usr/local/bin/install-composer |
| 134 | + |
| 135 | +# Change entrypoint back to the default because we don't need shush in development |
| 136 | +ENTRYPOINT ["docker-php-entrypoint"] |
| 137 | + |
| 138 | +## ZTS-DEV stage ## |
| 139 | +FROM zts-dev-root AS zts-dev |
| 140 | + |
| 141 | +USER app |
| 142 | + |
| 143 | +## ZTS stage ## |
| 144 | +FROM zts-root AS zts |
| 145 | + |
| 146 | +USER app |
0 commit comments