1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- # ====================
- # --- Build Assets ---
- # ====================
- FROM node:20-alpine AS assets
- RUN apk add yarn g++ make cmake python3 --no-cache
- WORKDIR /wiki
- COPY ./client ./client
- COPY ./dev ./dev
- COPY ./patches ./patches
- COPY ./package.json ./package.json
- COPY ./.babelrc ./.babelrc
- COPY ./.eslintignore ./.eslintignore
- COPY ./.eslintrc.yml ./.eslintrc.yml
- RUN yarn cache clean
- RUN yarn --frozen-lockfile --non-interactive
- RUN yarn build
- RUN rm -rf /wiki/node_modules
- RUN yarn --production --frozen-lockfile --non-interactive
- RUN yarn patch-package
- # ===============
- # --- Release ---
- # ===============
- FROM node:20-alpine
- LABEL maintainer="requarks.io"
- RUN apk add bash curl git openssh gnupg sqlite --no-cache && \
- mkdir -p /wiki && \
- mkdir -p /logs && \
- mkdir -p /wiki/data/content && \
- chown -R node:node /wiki /logs
- WORKDIR /wiki
- COPY --chown=node:node --from=assets /wiki/assets ./assets
- COPY --chown=node:node --from=assets /wiki/node_modules ./node_modules
- COPY --chown=node:node ./server ./server
- COPY --chown=node:node --from=assets /wiki/server/views ./server/views
- COPY --chown=node:node ./dev/build/config.yml ./config.yml
- COPY --chown=node:node ./package.json ./package.json
- COPY --chown=node:node ./LICENSE ./LICENSE
- USER node
- VOLUME ["/wiki/data/content"]
- EXPOSE 3000
- EXPOSE 3443
- # HEALTHCHECK --interval=30s --timeout=30s --start-period=30s --retries=3 CMD curl -f http://localhost:3000/healthz
- CMD ["node", "server"]
|