From b890eff1ed30d127d9b578f6d689a987c0ea9659 Mon Sep 17 00:00:00 2001 From: OhYee Date: Sat, 2 Oct 2021 02:08:49 +0800 Subject: [PATCH] workflow: docker build quicker --- .dockerignore | 1 + Dockerfile | 33 +++++++++++++++++++++------------ build.bash | 2 +- 3 files changed, 23 insertions(+), 13 deletions(-) create mode 100644 .dockerignore diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..b512c09 --- /dev/null +++ b/.dockerignore @@ -0,0 +1 @@ +node_modules \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index c256a4b..afe99f9 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,31 +1,40 @@ # syntax=docker/dockerfile:experimental -FROM node:16.5.0 AS builder +FROM node:16.5.0 AS deps WORKDIR /data/blotter_page # deps cache COPY ./package.json ./yarn.lock ./ -RUN yarn --global +RUN yarn install --frozen-lockfile + +FROM node:16.5.0 AS builder + +WORKDIR /data/blotter_page # build code COPY ./ /data/blotter_page +COPY --from=deps /data/blotter_page/node_modules ./node_modules +RUN yarn build && yarn install --production --ignore-scripts --prefer-offline + + +FROM node:16.5.0 AS prod_deps + WORKDIR /data/blotter_page -RUN yarn --global && yarn build + +# deps cache +COPY ./package.json ./yarn.lock ./ +RUN yarn install --frozen-lockfile --prod FROM node:16.5.0 AS prod ENV backendURI="http://backend:50000" - WORKDIR /data/blotter_page +ENTRYPOINT [ "yarn", "start" ] # dev cache -COPY --from=builder /data/blotter_page/package.json /data/blotter_page/package.json -COPY --from=builder /data/blotter_page/yarn.lock /data/blotter_page/yarn.lock -RUN yarn --prod - -COPY --from=builder /data/blotter_page/.next /data/blotter_page/.next -COPY --from=builder /data/blotter_page/next.config.js /data/blotter_page/next.config.js - +COPY --from=prod_deps /data/blotter_page/package.json /data/blotter_page/yarn.lock ./ +COPY --from=prod_deps /data/blotter_page/node_modules ./node_modules -ENTRYPOINT [ "yarn", "start" ] \ No newline at end of file +COPY --from=builder /data/blotter_page/next.config.js ./ +COPY --from=builder /data/blotter_page/.next ./.next \ No newline at end of file diff --git a/build.bash b/build.bash index eadee4d..fb8b113 100644 --- a/build.bash +++ b/build.bash @@ -8,4 +8,4 @@ fi IMAGE="ohyee/blotter_page:${TAG}" echo $IMAGE -docker build --no-cache -t ${IMAGE} . \ No newline at end of file +docker build -t ${IMAGE} . \ No newline at end of file