|
|
@@ -29,6 +29,17 @@ RUN --mount=type=cache,target=/usr/local/share/.cache/yarn \
|
|
|
|
|
|
|
|
|
|
|
|
+##
|
|
|
+## deps-resolver-prod
|
|
|
+##
|
|
|
+FROM deps-resolver AS deps-resolver-prod
|
|
|
+
|
|
|
+# shrink dependencies for production
|
|
|
+RUN --mount=type=cache,target=/usr/local/share/.cache/yarn \
|
|
|
+ yarn install --production
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
##
|
|
|
## prebuilder-default
|
|
|
##
|
|
|
@@ -37,10 +48,14 @@ LABEL maintainer Yuki Takei <yuki@weseek.co.jp>
|
|
|
|
|
|
ENV appDir /opt/growi
|
|
|
|
|
|
-COPY --from=deps-resolver ${appDir}/node_modules ${appDir}/node_modules
|
|
|
-COPY . ${appDir}/
|
|
|
-
|
|
|
-WORKDIR ${appDir}
|
|
|
+COPY bin ${appDir}/bin
|
|
|
+COPY config ${appDir}/config
|
|
|
+COPY public ${appDir}/public
|
|
|
+COPY resource ${appDir}/resource
|
|
|
+COPY src ${appDir}/src
|
|
|
+COPY tmp ${appDir}/tmp
|
|
|
+COPY babel.config.js package.json yarn.lock ${appDir}/
|
|
|
+COPY *.md LICENSE ${appDir}/
|
|
|
|
|
|
|
|
|
|
|
|
@@ -50,7 +65,7 @@ WORKDIR ${appDir}
|
|
|
FROM prebuilder-default AS prebuilder-nocdn
|
|
|
|
|
|
# replace env.prod.js for NO_CDN
|
|
|
-COPY nocdn/env.prod.js config
|
|
|
+COPY docker/nocdn/env.prod.js ${appDir}/config/
|
|
|
|
|
|
|
|
|
|
|
|
@@ -61,16 +76,18 @@ FROM prebuilder-${flavor} AS builder
|
|
|
|
|
|
ENV appDir /opt/growi
|
|
|
|
|
|
+COPY --from=deps-resolver ${appDir}/node_modules ${appDir}/node_modules
|
|
|
+
|
|
|
+WORKDIR ${appDir}
|
|
|
+
|
|
|
# build
|
|
|
RUN yarn build:prod
|
|
|
-# shrink dependencies for production
|
|
|
-RUN --mount=type=cache,target=/usr/local/share/.cache/yarn \
|
|
|
- yarn install --production
|
|
|
|
|
|
# remove unnecessary files
|
|
|
-WORKDIR /tmp
|
|
|
-RUN --mount=target=. sh docker/bin/remove-unnecessary-files.sh
|
|
|
-WORKDIR ${appDir}
|
|
|
+RUN rm -rf bin
|
|
|
+RUN rm -rf node_modules
|
|
|
+RUN rm -rf src/client src/linter-checker src/test
|
|
|
+RUN rm -rf babel.config.js
|
|
|
|
|
|
|
|
|
|
|
|
@@ -86,16 +103,17 @@ ENV appDir /opt/growi
|
|
|
RUN --mount=type=cache,target=/var/cache/apk \
|
|
|
apk add tini
|
|
|
|
|
|
-COPY --from=builder --chown=node:node ${appDir} ${appDir}
|
|
|
+COPY docker/docker-entrypoint.sh /
|
|
|
+COPY --from=deps-resolver-prod --chown=node:node \
|
|
|
+ ${appDir}/node_modules ${appDir}/node_modules
|
|
|
+COPY --from=builder --chown=node:node \
|
|
|
+ ${appDir} ${appDir}
|
|
|
|
|
|
-# create symlink for FILE_UPLOAD=local
|
|
|
-WORKDIR /tmp
|
|
|
-RUN --mount=target=. sh docker/bin/symlink-for-uploading-to-local.sh
|
|
|
WORKDIR ${appDir}
|
|
|
|
|
|
USER node
|
|
|
VOLUME /data
|
|
|
EXPOSE 3000
|
|
|
|
|
|
-ENTRYPOINT ["/sbin/tini", "-e", "143", "--"]
|
|
|
+ENTRYPOINT ["/docker-entrypoint.sh"]
|
|
|
CMD ["yarn", "server:prod"]
|