diff --git a/Dockerfile b/Dockerfile
index e31af0099b..77cedb6aea 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -3,8 +3,9 @@ FROM alpine:3.8 AS base
 ENV NODE_ENV=production
 
 RUN apk add --no-cache nodejs nodejs-npm zlib
+RUN npm i -g npm@latest
+
 WORKDIR /misskey
-COPY . ./
 
 FROM base AS builder
 
@@ -21,19 +22,23 @@ RUN apk add --no-cache \
     pkgconfig \
     libtool \
     zlib-dev
-RUN npm i -g npm@latest \
- && npm i \
- && npm i -g node-gyp \
- && node-gyp configure \
+RUN npm i -g node-gyp
+
+COPY ./package.json ./
+RUN npm i
+
+COPY . ./
+RUN node-gyp configure \
  && node-gyp build \
  && npm run build
 
 FROM base AS runner
 
-COPY --from=builder /misskey/built ./built
-COPY --from=builder /misskey/node_modules ./node_modules
-
 RUN apk add --no-cache tini
 ENTRYPOINT ["/sbin/tini", "--"]
 
+COPY --from=builder /misskey/node_modules ./node_modules
+COPY --from=builder /misskey/built ./built
+COPY . ./
+
 CMD ["npm", "start"]