Files
mini-loader/docker/Dockerfile
2024-01-14 12:49:54 +01:00

54 lines
1.2 KiB
Docker

FROM node:18-alpine AS base
RUN corepack enable
FROM base AS builder
RUN apk add --no-cache libc6-compat
RUN apk update
RUN npm install -g turbo
# Set working directory
WORKDIR /app
COPY . .
RUN turbo prune @morten-olsen/mini-loader-server --docker
# Add lockfile and package.json's of isolated subworkspace
FROM base AS installer
RUN apk add --no-cache libc6-compat
RUN apk update
WORKDIR /app
# First install the dependencies (as they change less often)
COPY .gitignore .gitignore
COPY --from=builder /app/out/json/ .
RUN pnpm install
# Build the project
COPY --from=builder /app/out/full/ .
RUN pnpm turbo run build --filter=@morten-olsen/mini-loader-server
FROM base AS runner
ENV \
NODE_ENV=production \
DATA_DIR=/data \
CACHE_DIR=/cache
RUN apk add --no-cache jq curl
WORKDIR /app
# Don't run production as root
RUN \
ln -s /app/packages/server/bin/index.mjs /usr/local/bin/mini-loader-server
COPY ./docker/entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
COPY --from=installer /app .
EXPOSE 4500
VOLUME /data
HEALTHCHECK \
--interval=10s \
--start-period=10s \
CMD curl -f http://localhost:4500/health || exit 1
ENTRYPOINT ["/entrypoint.sh"]
CMD ["mini-loader-server", "start"]