diff --git a/modules/codebuild/codebuild_files/Dockerfile_serverless_wordpress b/modules/codebuild/codebuild_files/Dockerfile_serverless_wordpress index 9bb4669..ed97e1f 100644 --- a/modules/codebuild/codebuild_files/Dockerfile_serverless_wordpress +++ b/modules/codebuild/codebuild_files/Dockerfile_serverless_wordpress @@ -1,17 +1,55 @@ ARG aws_account_id ARG aws_region ARG ecr_repo_name + +# This stage is used to install plugin dependencies using composer. We use a docker multi-stage build to ensure all +# these extra dependencies do not end up in the final layer. +FROM php:7.4 as compile + ARG wp2static_version ARG wp2static_s3_addon_version -FROM ${aws_account_id}.dkr.ecr.${aws_region}.amazonaws.com/${ecr_repo_name}:base +WORKDIR /deps + +# Install system dependencies +RUN apt-get update && \ + apt-get install --no-install-recommends -y wget zip unzip && \ + rm -fr /var/lib/apt/lists/* + +# Install composer +RUN wget https://raw.githubusercontent.com/composer/getcomposer.org/main/web/installer -O - -q | php -- --quiet && \ + mv /deps/composer.phar /usr/local/bin/composer + +# Download wp2static source code, install composer dependencies and build production plugin bundle +RUN curl -Lf https://github.com/WP2Static/wp2static/archive/refs/tags/${wp2static_version}.zip -o /deps/serverless-wordpress-wp2static.zip && \ + unzip /deps/serverless-wordpress-wp2static.zip && \ + cd /deps/wp2static-${wp2static_version} && \ + composer install && \ + composer build serverless-wordpress-wp2static && \ + mv $HOME/Downloads/serverless-wordpress-wp2static.zip /deps/serverless-wordpress-wp2static.zip + +# Download wp2static-s3-addon source code, install composer dependencies and build production plugin bundle +RUN curl -Lf https://github.com/leonstafford/wp2static-addon-s3/archive/refs/tags/${wp2static_s3_addon_version}.zip -o /deps/serverless-wordpress-s3-addon.zip && \ + unzip /deps/serverless-wordpress-s3-addon.zip && \ + cd /deps/wp2static-addon-s3-${wp2static_s3_addon_version} && \ + composer install && \ + composer build serverless-wordpress-s3-addon && \ + mv $HOME/Downloads/serverless-wordpress-s3-addon.zip /deps/serverless-wordpress-s3-addon.zip + +# Start over with a fresh wordpress layer +ARG aws_account_id +ARG aws_region +ARG ecr_repo_name +FROM ${aws_account_id}.dkr.ecr.${aws_region}.amazonaws.com/${ecr_repo_name}:base as wordpress + COPY ["wp-cli.phar", "/tmp/"] COPY docker-entrypoint.sh /usr/local/bin/ RUN apt-get update && apt-get install -y sudo jq awscli mariadb-client && chmod +x /usr/local/bin/docker-entrypoint.sh && chmod +x /tmp/wp-cli.phar && mv /tmp/wp-cli.phar /usr/local/bin/wp \ && rm -rf /var/lib/apt/lists/* -RUN curl https://github.com/WP2Static/wp2static/archive/refs/tags/${wp2static_version}.zip -o /tmp/serverless-wordpress-wp2static.zip -RUN curl https://github.com/leonstafford/wp2static-addon-s3/archive/refs/tags/${wp2static_s3_addon_version}.zip -o /tmp/serverless-wordpress-s3-addon.zip +# Copy over built plugins for the compile layer +COPY --from=compile /deps/serverless-wordpress-wp2static.zip /tmp/serverless-wordpress-wp2static.zip +COPY --from=compile /deps/serverless-wordpress-s3-addon.zip /tmp/serverless-wordpress-s3-addon.zip RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini" COPY ["php.ini", "$PHP_INI_DIR/conf.d/"]