From 4473bbebfb161262acf8591f73a52fd6ea939694 Mon Sep 17 00:00:00 2001 From: xZero707 Date: Sat, 25 Sep 2021 00:47:50 +0200 Subject: [PATCH] Improve, much more efficient and reuses already build binaries --- Dockerfile | 55 +++++++++++++++++++++--------------------------------- 1 file changed, 21 insertions(+), 34 deletions(-) diff --git a/Dockerfile b/Dockerfile index 1b2d447..4277e53 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,52 +1,39 @@ ARG PHP_VERSION=7.4 ARG WP_VERSION=5.8.0 -FROM --platform=${TARGETPLATFORM} wordpress:${WP_VERSION}-php${PHP_VERSION}-fpm-alpine AS wordpress-builder -# As long as new version doesn't require changes to Dockerfile, we don't need separate files - -USER root - -WORKDIR /tmp/build/rootfs - -# Build root filesystem structure (overlay), and copy over neccessary files -RUN mkdir -p usr/local/bin \ - && mkdir -p usr/local/etc/php/conf.d/ \ - && mv /usr/local/etc/php/conf.d/error-logging.ini usr/local/etc/php/conf.d/ \ - && mv /usr/local/etc/php/conf.d/opcache-recommended.ini usr/local/etc/php/conf.d/ -################################################# APP ################################################################## +# Stage 1 - wordpress +FROM --platform=${TARGETPLATFORM} wordpress:${WP_VERSION}-php${PHP_VERSION}-fpm-alpine AS wordpress + + +# Stage 2 - Build rootfs +FROM scratch AS wordpress-rootfs + +COPY --from=wordpress /usr/local/etc/php/conf.d /usr/local/etc/php/conf.d/ +COPY --from=wordpress /usr/local/etc/php-fpm.d /usr/local/etc/php-fpm.d/ +COPY --from=wordpress /usr/local/include/php/ext /usr/local/include/php/ext/ +COPY --from=wordpress /usr/local/lib/php/extensions /usr/local/lib/php/extensions/ +COPY --from=wordpress /usr/local/lib/php/test /usr/local/lib/php/test/ + + +# Stage 3 - Final FROM --platform=${TARGETPLATFORM} nlss/php-nginx:${PHP_VERSION} +# As long as new version doesn't require changes to Dockerfile, we don't need separate files ARG WP_VERSION -ENV APK_DEPS "zlib-dev libzip-dev libpng-dev icu-dev imagemagick-dev patch" -ENV APK_BUILD_DEPS "curl-dev autoconf alpine-sdk" -ENV APK_WP_CLI_DEPS "bash less mysql-client" -RUN apk add --update --no-cache ${APK_WP_CLI_DEPS} ${APK_DEPS} ${APK_BUILD_DEPS} \ - && docker-php-ext-install -j "$(nproc)" \ - bcmath \ - exif \ - gd \ - mysqli \ - opcache \ - zip \ - intl \ - && pecl install redis apcu imagick-3.4.4 \ - && docker-php-ext-enable redis apcu imagick \ - && apk del ${APK_BUILD_DEPS} \ - && rm /tmp/* -rf -# TODO: Official WordPress has upgraded imagick to 5.x - -COPY --from=wordpress-builder /tmp/build/rootfs / +COPY --from=wordpress-rootfs / / COPY --from=wordpress:cli-php7.4 /usr/local/bin/wp /usr/local/bin/wp-cli - +ENV APK_RUNTIME_DEPS "zlib-dev libzip-dev libpng-dev icu-dev imagemagick-dev patch" +ENV APK_WP_CLI_DEPS "bash less mysql-client" ENV WP_VERSION ${WP_VERSION} ENV WP_LOCALE en_US ENV CRON_ENABLED true ENV VIRTUAL_HOST your-domain.com ADD rootfs / -RUN echo "*/5 * * * * /usr/local/bin/wp cron event run --due-now" >> /etc/crontabs/www-data \ +RUN apk add --update --no-cache ${APK_WP_CLI_DEPS} ${APK_RUNTIME_DEPS} \ + && echo "*/5 * * * * /usr/local/bin/wp cron event run --due-now" >> /etc/crontabs/www-data \ && chmod a+x /usr/local/bin/wp VOLUME ["/root/.wp-cli", "/var/www/${WEB_ROOT}", "/var/www/${WEB_ROOT}/wp-content"]