Skip to content
Snippets Groups Projects
Dockerfile 1.51 KiB
Newer Older
  • Learn to ignore specific revisions
  • FROM node:19-slim AS base
    
    ENV PNPM_HOME="/pnpm"
    ENV PATH="$PNPM_HOME:$PATH"
    RUN corepack enable
    
    ENV GRAPHPOLARIS_VERSION=$IMAGE_TAG
    
    
    FROM base AS install
    COPY package.json ./
    COPY pnpm-lock.yaml ./
    COPY pnpm-workspace.yaml ./
    COPY turbo.json ./
    COPY apps/web/package.json ./apps/web/package.json
    COPY apps/docs/package.json ./apps/docs/package.json
    COPY libs/config/package.json ./libs/config/package.json
    COPY libs/shared/package.json ./libs/shared/package.json
    
    RUN pnpm install --frozen-lockfile
    
    
    
    FROM base AS build
    WORKDIR /app
    COPY apps /app/apps
    COPY libs /app/libs
    COPY --from=install /app /app
    
    # Fixes: FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
    ENV NODE_OPTIONS="--max-old-space-size=4096"
    RUN pnpm run build
    
    
    FROM base AS env-build
    RUN npm install -g pkg
    WORKDIR /app
    COPY --from=install /app/node_modules /app/node_modules
    RUN npx pkg ./node_modules/@import-meta-env/cli/bin/import-meta-env.js --target node18-alpine-x64 --output import-meta-env-alpine
    
    
    
    FROM nginx:1.25-alpine
    
    WORKDIR /app
    COPY nginx/nginx.conf /etc/nginx/conf.d/default.conf
    COPY entrypoint.sh /usr/bin/entrypoint.sh
    COPY apps/web/.env.example /.env.example
    COPY --from=env-build /app/import-meta-env-alpine /import-meta-env-alpine
    
    COPY --from=build /app/apps/web/dist /usr/share/nginx/html
    
    RUN chmod +x /usr/bin/entrypoint.sh
    EXPOSE 4200
    ENTRYPOINT ["/usr/bin/entrypoint.sh"]
    # ENTRYPOINT ["ls", "-la"]