34 lines
1.5 KiB
Docker
34 lines
1.5 KiB
Docker
# 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"]
|