Skip to content

Commit

Permalink
Refactor build steps
Browse files Browse the repository at this point in the history
  • Loading branch information
turbo124 committed Apr 4, 2024
1 parent 0f9d399 commit 5609b98
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 26 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/build-image-v5.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
71 changes: 46 additions & 25 deletions alpine/5/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -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
#
Expand All @@ -50,7 +69,6 @@ RUN set -eux; \
font-isas-misc \
supervisor \
mysql-client \
git \
chromium \
ttf-freefont

Expand Down Expand Up @@ -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
Expand Down

0 comments on commit 5609b98

Please sign in to comment.