From 5609b988f3ad175d75cc058327fc554f2d848c06 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Thu, 4 Apr 2024 20:04:13 +1100 Subject: [PATCH] Refactor build steps --- .github/workflows/build-image-v5.yaml | 2 +- alpine/5/Dockerfile | 71 +++++++++++++++++---------- 2 files changed, 47 insertions(+), 26 deletions(-) diff --git a/.github/workflows/build-image-v5.yaml b/.github/workflows/build-image-v5.yaml index 1b40cfe0..19c4a443 100644 --- a/.github/workflows/build-image-v5.yaml +++ b/.github/workflows/build-image-v5.yaml @@ -44,7 +44,7 @@ jobs: with: builder: ${{ steps.buildx.outputs.name }} context: ./alpine/5/ - build-args: INVOICENINJA_VERSION=5-stable + build-args: INVOICENINJA_VERSION=5-develop target: prod platforms: linux/amd64,linux/arm64 tags: invoiceninja/invoiceninja:cache diff --git a/alpine/5/Dockerfile b/alpine/5/Dockerfile index 5ab90b51..70ef2e26 100644 --- a/alpine/5/Dockerfile +++ b/alpine/5/Dockerfile @@ -7,25 +7,44 @@ FROM --platform=$BUILDPLATFORM node:lts-alpine as nodebuild # Download Invoice Ninja ARG INVOICENINJA_VERSION -ADD https://github.com/invoiceninja/invoiceninja/tarball/v$INVOICENINJA_VERSION /tmp/ninja.tar.gz +# ADD https://github.com/invoiceninja/invoiceninja/tarball/v$INVOICENINJA_VERSION /tmp/ninja.tar.gz +ADD https://github.com/invoiceninja/invoiceninja/releases/download/v$INVOICENINJA_VERSION/react-invoiceninja.tar /tmp/ninja.tar RUN set -eux; apk add curl unzip # Extract Invoice Ninja RUN mkdir -p /var/www/app \ - && tar --strip-components=1 -xf /tmp/ninja.tar.gz -C /var/www/app/ \ + && tar -xvf /tmp/ninja.tar -C /var/www/app/ \ && mkdir -p /var/www/app/public/logo /var/www/app/storage +RUN rm -f /var/www/app/public/main.* +RUN rm -f /var/www/app/public/flutter* + # Download and extract the latest react application -RUN curl -LGO $(curl https://api.github.com/repos/invoiceninja/ui/releases/latest | grep "browser_download_url" | awk '{ print $2 }' | sed 's/,$//' | sed 's/"//g'); -RUN cp invoiceninja-react.zip /tmp/invoiceninja-react.zip -RUN unzip /tmp/invoiceninja-react.zip -RUN mkdir /var/www/app/public/react/v$INVOICENINJA_VERSION/ -RUN cp -r dist/react/* /var/www/app/public/react/v$INVOICENINJA_VERSION/ -RUN cp -r dist/react/* /var/www/app/public/react/ +# RUN curl -LGO $(curl https://api.github.com/repos/invoiceninja/ui/releases/latest | grep "browser_download_url" | awk '{ print $2 }' | sed 's/,$//' | sed 's/"//g'); +# RUN cp invoiceninja-react.zip /tmp/invoiceninja-react.zip +# RUN unzip /tmp/invoiceninja-react.zip +# RUN mkdir /var/www/app/public/react/v$INVOICENINJA_VERSION/ +# RUN cp -r dist/react/* /var/www/app/public/react/v$INVOICENINJA_VERSION/ +# RUN cp -r dist/react/* /var/www/app/public/react/ -RUN mkdir -p /var/www/app/public/tinymce_6.4.2/tinymce/js/ -RUN cp -r dist/tinymce_6.4.2/* /var/www/app/public/tinymce_6.4.2/ +# RUN mkdir -p /var/www/app/public/tinymce_6.4.2/tinymce/js/ +# RUN cp -r dist/tinymce_6.4.2/* /var/www/app/public/tinymce_6.4.2/ + + +# WORKDIR /var/www/app + +# RUN git clone https://github.com/invoiceninja/ui.git + +# WORKDIR /var/www/app/ui + +# RUN git checkout develop +# RUN npm i +# RUN npm run build +# RUN cp -r dist/* /var/www/app/public/ + + +# WORKDIR /var/www/app # Download and extract the latest react application # @@ -50,7 +69,6 @@ RUN set -eux; \ font-isas-misc \ supervisor \ mysql-client \ - git \ chromium \ ttf-freefont @@ -90,32 +108,35 @@ ENV BAK_STORAGE_PATH $BAK_STORAGE_PATH ENV BAK_PUBLIC_PATH $BAK_PUBLIC_PATH COPY --from=nodebuild --chown=$INVOICENINJA_USER:$INVOICENINJA_USER /var/www/app /var/www/app +RUN rm -f /var/www/app/public/main.* +RUN rm -f /var/www/app/public/flutter* + USER $UID WORKDIR /var/www/app # Do not remove this ENV ENV IS_DOCKER true -RUN /usr/local/bin/composer install --no-dev --no-scripts --no-interaction -RUN /usr/local/bin/composer dump-autoload --optimize --no-dev --classmap-authoritative --no-scripts --no-interaction +# RUN /usr/local/bin/composer install --no-dev --no-scripts --no-interaction +# RUN /usr/local/bin/composer dump-autoload --optimize --no-dev --classmap-authoritative --no-scripts --no-interaction -FROM --platform=$BUILDPLATFORM nodebuild AS dependencybuild +# FROM --platform=$BUILDPLATFORM nodebuild AS dependencybuild -WORKDIR /var/www/app +# WORKDIR /var/www/app -COPY --from=phpbuild /var/www/app/vendor /var/www/app/vendor +# COPY --from=phpbuild /var/www/app/vendor /var/www/app/vendor -# Install node packages -ARG BAK_STORAGE_PATH -ARG BAK_PUBLIC_PATH -RUN --mount=target=/var/www/app/node_modules,type=cache \ - npm install \ - && npm run production \ - && mv /var/www/app/storage $BAK_STORAGE_PATH \ - && mv /var/www/app/public $BAK_PUBLIC_PATH +# # Install node packages +# ARG BAK_STORAGE_PATH +# ARG BAK_PUBLIC_PATH +# RUN --mount=target=/var/www/app/node_modules,type=cache \ +# npm install \ +# && npm run production \ +# && mv /var/www/app/storage $BAK_STORAGE_PATH \ +# && mv /var/www/app/public $BAK_PUBLIC_PATH FROM phpbuild as prod -COPY --from=dependencybuild --chown=$INVOICENINJA_USER:$INVOICENINJA_USER /var/www/app /var/www/app +# COPY --from=dependencybuild --chown=$INVOICENINJA_USER:$INVOICENINJA_USER /var/www/app /var/www/app # Override the environment settings from projects .env file ENV APP_ENV production