############################################################
# Build stage
############################################################
FROM node:20.19.0-alpine3.20 AS build

RUN apk --no-cache add \
   build-base \
   git \
   python3

WORKDIR /tmp

# Copy package.json first to benefit from layer caching
COPY package*.json ./

# Copy src to have config files for install
COPY . .

# Install without scripts
RUN npm ci --omit=dev --ignore-scripts \
    # Copy production node_modules aside for later
 && cp -R node_modules prod_node_modules \
    # Install all dependencies
 && npm ci \
    # Run build steps
 && npm run build

############################################################
# Release stage
############################################################
FROM node:20.19.0-alpine3.20 AS release

VOLUME /parse-server/cloud /parse-server/config

WORKDIR /parse-server

# Copy build stage folders
COPY --from=build /tmp/prod_node_modules /parse-server/node_modules
COPY --from=build /tmp/lib lib

COPY package*.json ./
COPY bin bin
COPY public public
COPY views views
RUN mkdir -p logs && chown -R node: logs

ENV PORT=1337
USER node
EXPOSE $PORT

ENTRYPOINT ["node", "./bin/parse-server"]
