# This Dockerfile should be built from the project root directory: # docker build -f match_collector/Dockerfile -t buildpath-match_collector . FROM node:current-alpine AS build RUN mkdir -p /home/node/app && chown -R node:node /home/node/app WORKDIR /home/node/app # Copy and build dragon-item-parser first COPY --chown=node:node dragon-item-parser/package*.json ./dragon-item-parser/ COPY --chown=node:node dragon-item-parser/tsconfig.json ./dragon-item-parser/ COPY --chown=node:node dragon-item-parser/src ./dragon-item-parser/src WORKDIR /home/node/app/dragon-item-parser RUN npm install && npm run build # Build match_collector WORKDIR /home/node/app COPY --chown=node:node match_collector/package*.json ./match_collector/ WORKDIR /home/node/app/match_collector RUN npm install COPY --chown=node:node match_collector/. . FROM node:current-alpine # Install su-exec for dropping privileges RUN apk add --no-cache su-exec RUN mkdir -p /home/node/app && chown -R node:node /home/node/app WORKDIR /home/node/app COPY --from=build --chown=node:node /home/node/app/match_collector/node_modules ./node_modules COPY --from=build --chown=node:node /home/node/app/match_collector/. . COPY --chown=node:node match_collector/docker-entrypoint.sh /usr/local/bin/ RUN chmod +x /usr/local/bin/docker-entrypoint.sh # Run entrypoint as root to fix permissions, then drop to node user ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"] CMD ["/bin/sh", "-c", "node --import=tsx src/index.ts; sleep 12h"]