-
Jakub Lachór authoredJakub Lachór authored
Dockerfile 2.75 KiB
# syntax=docker/dockerfile:1.5
# Build with: docker buildx bake --progress=plain local-build
FROM node:18.20-alpine3.20 AS base
FROM base AS deps
RUN apk add --no-cache libc6-compat
WORKDIR /home/node/app
RUN chown node /home/node/app
USER node
RUN mkdir ~/.npm-global
ENV NPM_CONFIG_PREFIX=/home/node/.npm-global
ENV PATH=$PATH:/home/node/.npm-global/bin
RUN <<-EOF
npm install -g @beam-australia/react-env@3.1.1
npm install -g sharp@0.32.4
EOF
COPY --chown=node package.json package-lock.json* ./
RUN npm ci
FROM base AS builder
WORKDIR /home/node/app
RUN <<-EOF
apk add --no-cache git
chown node /home/node/app
EOF
COPY --from=deps --chown=node /home/node/app/node_modules ./node_modules
COPY --chown=node . .
USER node
ENV NEXT_TELEMETRY_DISABLED 1
RUN npm run build:standalone
FROM base AS runner
ARG BUILD_TIME
ARG GIT_COMMIT_SHA
ARG GIT_CURRENT_BRANCH
ARG GIT_LAST_LOG_MESSAGE
ARG GIT_LAST_COMMITTER
ARG GIT_LAST_COMMIT_DATE
RUN apk add --no-cache tini
WORKDIR /home/node/app
RUN chown node /home/node/app
ENV NODE_ENV production
ENV NEXT_TELEMETRY_DISABLED 1
USER node
RUN mkdir ~/.npm-global
ENV NPM_CONFIG_PREFIX=/home/node/.npm-global
ENV PATH=$PATH:/home/node/.npm-global/bin
ENV NEXT_SHARP_PATH=/home/node/.npm-global/lib/node_modules/sharp
COPY --from=deps --chown=node /home/node/.npm-global /home/node/.npm-global
COPY --from=builder --chown=node /home/node/app/.next/standalone ./
COPY --from=builder --chown=node /home/node/app/docker/docker-entrypoint.sh /home/node/app/docker-entrypoint.sh
COPY --from=builder --chown=node /home/node/app/.env* ./
EXPOSE 5000
ENV PORT 5000
# HOSTNAME environment variable is set by Docker automatically
HEALTHCHECK CMD wget --no-verbose --tries=1 --spider http://$HOSTNAME:$PORT || exit 1
RUN chmod +x /home/node/app/docker-entrypoint.sh
LABEL org.opencontainers.image.created="$BUILD_TIME"
LABEL org.opencontainers.image.url="https://hive.io/"
LABEL org.opencontainers.image.documentation="https://gitlab.syncad.com/hive/block_explorer_ui"
LABEL org.opencontainers.image.source="https://gitlab.syncad.com/hive/block_explorer_ui"
#LABEL org.opencontainers.image.version="${VERSION}"
LABEL org.opencontainers.image.revision="$GIT_COMMIT_SHA"
LABEL org.opencontainers.image.licenses="MIT"
LABEL org.opencontainers.image.ref.name="HAF Block Explorer UI"
LABEL org.opencontainers.image.title="HAF Block Explorer UI Image"
LABEL org.opencontainers.image.description="Runs HAF Block Explorer User Interface application"
LABEL io.hive.image.branch="$GIT_CURRENT_BRANCH"
LABEL io.hive.image.commit.log_message="$GIT_LAST_LOG_MESSAGE"
LABEL io.hive.image.commit.author="$GIT_LAST_COMMITTER"
LABEL io.hive.image.commit.date="$GIT_LAST_COMMIT_DATE"
ENTRYPOINT ["/sbin/tini", "--", "/home/node/app/docker-entrypoint.sh"]
CMD ["node", "server.js"]