|
@@ -13,16 +13,15 @@ LABEL maintainer Yuki Takei <yuki@weseek.co.jp>
|
|
|
ENV appDir /opt/growi
|
|
ENV appDir /opt/growi
|
|
|
|
|
|
|
|
WORKDIR ${appDir}
|
|
WORKDIR ${appDir}
|
|
|
-COPY ./package.json ./
|
|
|
|
|
-COPY ./yarn.lock ./
|
|
|
|
|
|
|
+COPY ./package.json .
|
|
|
|
|
+COPY ./yarn.lock .
|
|
|
|
|
+COPY ./lerna.json .
|
|
|
|
|
+COPY ./packages/app/package.json packages/app/
|
|
|
|
|
+COPY ./packages/slack/package.json packages/slack/
|
|
|
|
|
|
|
|
# setup
|
|
# setup
|
|
|
RUN yarn config set network-timeout 300000
|
|
RUN yarn config set network-timeout 300000
|
|
|
-RUN yarn
|
|
|
|
|
-# install official plugins
|
|
|
|
|
-RUN yarn add -W growi-plugin-lsx growi-plugin-pukiwiki-like-linker growi-plugin-attachment-refs
|
|
|
|
|
-# install peerDependencies
|
|
|
|
|
-RUN yarn add -W -D react-images@1.0.0 react-motion
|
|
|
|
|
|
|
+RUN npx lerna bootstrap
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -34,24 +33,31 @@ FROM deps-resolver AS deps-resolver-prod
|
|
|
# shrink dependencies for production
|
|
# shrink dependencies for production
|
|
|
RUN yarn install --production
|
|
RUN yarn install --production
|
|
|
|
|
|
|
|
|
|
+# make artifacts
|
|
|
|
|
+RUN tar cf node_modules.tar node_modules \
|
|
|
|
|
+ packages/app/node_modules \
|
|
|
|
|
+ packages/slack/node_modules
|
|
|
|
|
+
|
|
|
|
|
|
|
|
|
|
|
|
|
##
|
|
##
|
|
|
## prebuilder-default
|
|
## prebuilder-default
|
|
|
##
|
|
##
|
|
|
FROM node:14-slim AS prebuilder-default
|
|
FROM node:14-slim AS prebuilder-default
|
|
|
-LABEL maintainer Yuki Takei <yuki@weseek.co.jp>
|
|
|
|
|
|
|
|
|
|
ENV appDir /opt/growi
|
|
ENV appDir /opt/growi
|
|
|
|
|
|
|
|
-COPY --from=deps-resolver ${appDir}/node_modules ${appDir}/node_modules
|
|
|
|
|
-
|
|
|
|
|
-# copy all files except the files listed in Dockerfile.dockerignore
|
|
|
|
|
-COPY . ${appDir}
|
|
|
|
|
|
|
+COPY ./package.json ./
|
|
|
|
|
+COPY ./lerna.json ./
|
|
|
|
|
+COPY ./tsconfig.base.json ./
|
|
|
|
|
+# copy all related packages
|
|
|
|
|
+COPY packages/slack packages/slack
|
|
|
|
|
+COPY packages/app packages/app
|
|
|
|
|
|
|
|
-# overwirte package.json and yarn.lock
|
|
|
|
|
-COPY --from=deps-resolver ${appDir}/package.json ${appDir}/package.json
|
|
|
|
|
-COPY --from=deps-resolver ${appDir}/yarn.lock ${appDir}/yarn.lock
|
|
|
|
|
|
|
+# copy dependent packages
|
|
|
|
|
+COPY --from=deps-resolver ${appDir}/node_modules .
|
|
|
|
|
+COPY --from=deps-resolver ${appDir}/packages/slack/node_modules packages/slack/
|
|
|
|
|
+COPY --from=deps-resolver ${appDir}/packages/app/node_modules packages/app/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -77,31 +83,42 @@ WORKDIR ${appDir}
|
|
|
# build
|
|
# build
|
|
|
RUN yarn build:prod
|
|
RUN yarn build:prod
|
|
|
|
|
|
|
|
-# remove except artifacts
|
|
|
|
|
-WORKDIR /tmp
|
|
|
|
|
-RUN --mount=target=. sh docker/bin/remove-except-artifacts.sh
|
|
|
|
|
-WORKDIR ${appDir}
|
|
|
|
|
|
|
+# make artifacts
|
|
|
|
|
+RUN tar cf packages.tar \
|
|
|
|
|
+ packages/app/package.json \
|
|
|
|
|
+ packages/app/config \
|
|
|
|
|
+ packages/app/public \
|
|
|
|
|
+ packages/app/tmp \
|
|
|
|
|
+ packages/slack/package.json \
|
|
|
|
|
+ packages/slack/dist
|
|
|
|
|
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
##
|
|
##
|
|
|
## release
|
|
## release
|
|
|
##
|
|
##
|
|
|
-FROM node:14-alpine
|
|
|
|
|
|
|
+FROM node:14-slim
|
|
|
LABEL maintainer Yuki Takei <yuki@weseek.co.jp>
|
|
LABEL maintainer Yuki Takei <yuki@weseek.co.jp>
|
|
|
|
|
|
|
|
ENV appDir /opt/growi
|
|
ENV appDir /opt/growi
|
|
|
|
|
|
|
|
-# install tini
|
|
|
|
|
-RUN apk add tini su-exec
|
|
|
|
|
|
|
+COPY --from=deps-resolver-prod --chown=node:node \
|
|
|
|
|
+ ${appDir}/node_modules.tar ${appDir}/
|
|
|
|
|
+COPY --from=builder --chown=node:node \
|
|
|
|
|
+ ${appDir}/packages.tar ${appDir}/
|
|
|
|
|
|
|
|
COPY docker/docker-entrypoint.sh /
|
|
COPY docker/docker-entrypoint.sh /
|
|
|
RUN chmod 700 /docker-entrypoint.sh
|
|
RUN chmod 700 /docker-entrypoint.sh
|
|
|
|
|
+RUN chown node:node ${appDir}
|
|
|
|
|
|
|
|
-COPY --from=deps-resolver-prod --chown=node:node \
|
|
|
|
|
- ${appDir}/node_modules ${appDir}/node_modules
|
|
|
|
|
-COPY --from=builder --chown=node:node \
|
|
|
|
|
- ${appDir} ${appDir}
|
|
|
|
|
|
|
+USER node
|
|
|
|
|
+
|
|
|
|
|
+# extract node_modules.tar
|
|
|
|
|
+WORKDIR ${appDir}
|
|
|
|
|
+RUN tar xf node_modules.tar
|
|
|
|
|
+RUN tar xf packages.tar
|
|
|
|
|
+RUN rm node_modules.tar packages.tar
|
|
|
|
|
|
|
|
WORKDIR ${appDir}
|
|
WORKDIR ${appDir}
|
|
|
|
|
|