Dockerfile 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. # syntax = docker/dockerfile:experimental
  2. ##
  3. ## setupper-default
  4. ##
  5. FROM node:12-slim AS setupper
  6. LABEL maintainer Yuki Takei <yuki@weseek.co.jp>
  7. ENV APP_VERSION v3.5.13
  8. ENV APP_DIR /opt/growi
  9. ARG ARCHIVE_NAME=${APP_VERSION}
  10. RUN mkdir -p ${APP_DIR}
  11. # download GROWI archive from Github
  12. RUN curl -SL https://github.com/weseek/growi/archive/${ARCHIVE_NAME}.tar.gz \
  13. | tar -xz -C ${APP_DIR} --strip-components 1
  14. WORKDIR ${APP_DIR}
  15. # setup
  16. RUN yarn config set network-timeout 300000
  17. RUN yarn
  18. # install official plugins
  19. RUN yarn add growi-plugin-lsx growi-plugin-pukiwiki-like-linker growi-plugin-attachment-refs
  20. # install peerDependencies
  21. RUN yarn add -D react-images react-motion
  22. ##
  23. ## setupper-nocdn
  24. ##
  25. FROM node:12-slim AS setupper-nocdn
  26. ENV APP_DIR /opt/growi
  27. COPY --from=setupper ${APP_DIR} ${APP_DIR}
  28. WORKDIR ${APP_DIR}
  29. # replace env.prod.js for NO_CDN
  30. COPY nocdn/env.prod.js config
  31. ##
  32. ## builder
  33. ##
  34. FROM node:12-slim AS builder
  35. LABEL maintainer Yuki Takei <yuki@weseek.co.jp>
  36. ENV APP_DIR /opt/growi
  37. ARG FLAVOR=default
  38. COPY --from=setupper-${FLAVOR} ${APP_DIR} ${APP_DIR}
  39. WORKDIR ${APP_DIR}
  40. # build
  41. RUN npm run build:prod
  42. # shrink dependencies for production
  43. RUN yarn install --production
  44. ##
  45. ## release
  46. ##
  47. FROM node:12-alpine
  48. LABEL maintainer Yuki Takei <yuki@weseek.co.jp>
  49. ENV APP_DIR /opt/growi
  50. # install tini
  51. RUN apk add --no-cache tini
  52. USER node
  53. COPY --from=builder ${APP_DIR} ${APP_DIR}
  54. WORKDIR ${APP_DIR}
  55. RUN --mount=target=. sh bin/symlink-for-uploading-to-local.sh
  56. VOLUME /data
  57. EXPOSE 3000
  58. ENTRYPOINT ["/sbin/tini", "-e", "143", "--"]
  59. CMD ["npm", "run", "server:prod"]