# Note this docker file is meant for local testing # and not for production. FROM node:18.19.0-alpine3.19 as builder ENV NODE_OPTIONS=--max-old-space-size=8192 ARG APP_ENV ARG BASE_URL ARG SERVER_BASE_URL ARG HIGHLIGHTS_BASE_URL ENV NEXT_PUBLIC_APP_ENV=$APP_ENV ENV NEXT_PUBLIC_BASE_URL=$BASE_URL ENV NEXT_PUBLIC_SERVER_BASE_URL=$SERVER_BASE_URL ENV NEXT_PUBLIC_HIGHLIGHTS_BASE_URL=$HIGHLIGHTS_BASE_URL RUN apk add g++ make python3 WORKDIR /app COPY ./package.json . COPY ./yarn.lock . COPY ./tsconfig.json . COPY ./.prettierrc . COPY ./.eslintrc . COPY ./web/package.json ./packages/web/package.json RUN yarn config set registry https://registry.npm.taobao.org && yarn install --pure-lockfile ADD ./web ./packages/web # We want an empty next.config.js when running in docker RUN echo "module.exports = {}" > ./packages/web/next.config.js RUN yarn workspace @omnivore/web build FROM node:18.19.0-alpine3.19 as runner ENV NODE_ENV production ENV PORT=8080 ENV NEXT_TELEMETRY_DISABLED 1 WORKDIR /app COPY --from=builder /app/packages/web/next.config.js /app/packages/web/next.config.js COPY --from=builder /app/packages/web/public/ /app/packages/web/public/ COPY --from=builder /app/packages/web/.next/ /app/packages/web/.next/ COPY --from=builder /app/packages/web/package.json /app/packages/web/package.json COPY --from=builder /app/packages/web/node_modules /app/packages/web/node_modules COPY --from=builder /app/node_modules /app/node_modules COPY --from=builder /app/package.json /app/package.json EXPOSE 8080 CMD ["yarn", "workspace", "@omnivore/web", "start"]