build(docker): refactor Dockerfile to enable caching of node_modules (#1550)

* ci: revert actions/cache version change and install GNU tar

* ci: do not potentially destroy Docker cache while building preview images

* build(docker): refactor Dockerfile to cache node_modules

* ci: remove Next.js caching

* build(docker): don't break arm builds
pull/1551/head
TheCatLady 4 years ago committed by GitHub
parent f256a444c5
commit 2fc9835a6a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -16,11 +16,6 @@ jobs:
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v2 uses: actions/checkout@v2
- name: Use Next.js cache
uses: actions/cache@v2.1.0
with:
path: ${{ github.workspace }}/.next/cache
key: ${{ runner.os }}-nextjs-${{ hashFiles('**/package.json') }}
- name: Install dependencies - name: Install dependencies
env: env:
HUSKY_SKIP_INSTALL: 1 HUSKY_SKIP_INSTALL: 1
@ -75,7 +70,7 @@ jobs:
ghcr.io/sct/overseerr:develop ghcr.io/sct/overseerr:develop
ghcr.io/sct/overseerr:${{ github.sha }} ghcr.io/sct/overseerr:${{ github.sha }}
cache-from: type=local,src=/tmp/.buildx-cache cache-from: type=local,src=/tmp/.buildx-cache
cache-to: type=local,dest=/tmp/.buildx-cache-new cache-to: type=local,dest=/tmp/.buildx-cache-new,mode=max
- # Temporary fix - # Temporary fix
# https://github.com/docker/build-push-action/issues/252 # https://github.com/docker/build-push-action/issues/252
# https://github.com/moby/buildkit/issues/1896 # https://github.com/moby/buildkit/issues/1896

@ -19,13 +19,6 @@ jobs:
uses: docker/setup-qemu-action@v1 uses: docker/setup-qemu-action@v1
- name: Set up Docker Buildx - name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1 uses: docker/setup-buildx-action@v1
- name: Cache Docker layers
uses: actions/cache@v2.1.5
with:
path: /tmp/.buildx-cache
key: ${{ runner.os }}-buildx-${{ github.sha }}
restore-keys: |
${{ runner.os }}-buildx-
- name: Log in to Docker Hub - name: Log in to Docker Hub
uses: docker/login-action@v1 uses: docker/login-action@v1
with: with:
@ -49,12 +42,3 @@ jobs:
tags: | tags: |
sctx/overseerr:${{ steps.get_version.outputs.VERSION }} sctx/overseerr:${{ steps.get_version.outputs.VERSION }}
ghcr.io/sct/overseerr:${{ steps.get_version.outputs.VERSION }} ghcr.io/sct/overseerr:${{ steps.get_version.outputs.VERSION }}
cache-from: type=local,src=/tmp/.buildx-cache
cache-to: type=local,dest=/tmp/.buildx-cache-new
- # Temporary fix
# https://github.com/docker/build-push-action/issues/252
# https://github.com/moby/buildkit/issues/1896
name: Move cache
run: |
rm -rf /tmp/.buildx-cache
mv /tmp/.buildx-cache-new /tmp/.buildx-cache

@ -13,11 +13,6 @@ jobs:
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v2 uses: actions/checkout@v2
- name: Use Next.js cache
uses: actions/cache@v2.1.0
with:
path: ${{ github.workspace }}/.next/cache
key: ${{ runner.os }}-nextjs-${{ hashFiles('**/package.json') }}
- name: Install dependencies - name: Install dependencies
env: env:
HUSKY_SKIP_INSTALL: 1 HUSKY_SKIP_INSTALL: 1

@ -24,11 +24,6 @@ jobs:
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v2 uses: actions/checkout@v2
- name: Cache Next.js build
uses: actions/cache@v2.1.0
with:
path: ${{ github.workspace }}/.next/cache
key: ${{ runner.os }}-nextjs-${{ hashFiles('**/package.json') }}
- name: Install dependencies - name: Install dependencies
env: env:
HUSKY_SKIP_INSTALL: 1 HUSKY_SKIP_INSTALL: 1

@ -1,28 +1,30 @@
FROM node:14.16-alpine AS BUILD_IMAGE FROM node:14.16-alpine AS BUILD_IMAGE
WORKDIR /app
ARG TARGETPLATFORM ARG TARGETPLATFORM
ENV TARGETPLATFORM=${TARGETPLATFORM:-linux/amd64} ENV TARGETPLATFORM=${TARGETPLATFORM:-linux/amd64}
ARG COMMIT_TAG
ENV COMMIT_TAG=${COMMIT_TAG}
COPY . /app
WORKDIR /app
RUN \ RUN \
case "${TARGETPLATFORM}" in \ case "${TARGETPLATFORM}" in \
'linux/arm64') apk add --no-cache python make g++ ;; \ 'linux/arm64') apk add --no-cache python make g++ ;; \
'linux/arm/v7') apk add --no-cache python make g++ ;; \ 'linux/arm/v7') apk add --no-cache python make g++ ;; \
esac esac
RUN yarn --frozen-lockfile --network-timeout 1000000 && \ COPY package.json yarn.lock ./
yarn build RUN yarn install --frozen-lockfile --network-timeout 1000000
COPY . ./
ARG COMMIT_TAG
ENV COMMIT_TAG=${COMMIT_TAG}
RUN yarn build
# remove development dependencies # remove development dependencies
RUN yarn install --production --ignore-scripts --prefer-offline RUN yarn install --production --ignore-scripts --prefer-offline
RUN rm -rf src && \ RUN rm -rf src server
rm -rf server
RUN touch config/DOCKER RUN touch config/DOCKER
@ -31,11 +33,12 @@ RUN echo "{\"commitTag\": \"${COMMIT_TAG}\"}" > committag.json
FROM node:14.16-alpine FROM node:14.16-alpine
WORKDIR /app
RUN apk add --no-cache tzdata tini RUN apk add --no-cache tzdata tini
# copy from build image # copy from build image
COPY --from=BUILD_IMAGE /app /app COPY --from=BUILD_IMAGE /app ./
WORKDIR /app
ENTRYPOINT [ "/sbin/tini", "--" ] ENTRYPOINT [ "/sbin/tini", "--" ]
CMD [ "yarn", "start" ] CMD [ "yarn", "start" ]

Loading…
Cancel
Save