From 6e1c398ee925a4a707ea614c7ff1248660372b61 Mon Sep 17 00:00:00 2001 From: exromany Date: Thu, 8 Jul 2021 14:37:00 +0300 Subject: [PATCH] fix dockerfile to build nextjs app --- .dockerignore | 3 ++- Dockerfile | 41 +++++++++++++++++++-------------- js/packages/web/.env.production | 1 - js/packages/web/next.config.js | 3 +++ js/packages/web/package.json | 1 + 5 files changed, 30 insertions(+), 19 deletions(-) diff --git a/.dockerignore b/.dockerignore index bfbdc1e..2f285cb 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,4 +1,5 @@ node_modules .git .editorconfig -.gitignore \ No newline at end of file +.gitignore +.next diff --git a/Dockerfile b/Dockerfile index 60d970b..4678c0e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,40 +1,47 @@ # Stage 1: Compile and Build the app # Node veersion -FROM node:14.15.1 as build +FROM node:14.17.3-alpine as build -# update - -RUN apt-get update -RUN apt-get -y install curl gnupg -RUN curl -sL https://deb.nodesource.com/setup_14.x | bash - -RUN apt-get -y install nodejs +# Check https://github.com/nodejs/docker-node/tree/b4117f9333da4138b03a546ec926ef50a31506c3#nodealpine to understand why libc6-compat might be needed. +RUN apk add --no-cache libc6-compat git # Set the working directory -WORKDIR /usr/local/app +WORKDIR /app # Add the source code to app -COPY ./ /usr/local/app/ +COPY ./js /app -WORKDIR js # Install all the dependencies -RUN yarn install +RUN yarn install --frozen-lockfile RUN yarn bootstrap # HERE ADD YOUR STORE WALLET ADDRESS ENV REACT_APP_STORE_OWNER_ADDRESS_ADDRESS="" # Generate the build of the application -ENV GENERATE_SOURCEMAP=false RUN yarn build # Stage 2: Serve app with nginx server -# Use official nginx image as the base image -FROM nginx:latest +# Production image, copy all the files and run next +FROM node:14.17.3-alpine AS runner +WORKDIR /app + +ENV NODE_ENV production + +RUN addgroup -g 1001 -S nodejs +RUN adduser -S nextjs -u 1001 # Copy the build output to replace the default nginx contents. -COPY --from=build /usr/local/app/js/build/web /usr/share/nginx/html +COPY --from=build /app/packages/web/next.config.js ./ +COPY --from=build /app/packages/web/public ./public +COPY --from=build --chown=nextjs:nodejs /app/packages/web/.next ./.next +COPY --from=build /app/node_modules ./node_modules +COPY --from=build /app/packages/web/package.json ./package.json -# Expose port 80 -EXPOSE 80 \ No newline at end of file +USER nextjs + +EXPOSE 3000 + +CMD ["yarn", "start:prod"] diff --git a/js/packages/web/.env.production b/js/packages/web/.env.production index ba7cc18..e69de29 100644 --- a/js/packages/web/.env.production +++ b/js/packages/web/.env.production @@ -1 +0,0 @@ -GENERATE_SOURCEMAP=false diff --git a/js/packages/web/next.config.js b/js/packages/web/next.config.js index 90787b6..4d6630f 100644 --- a/js/packages/web/next.config.js +++ b/js/packages/web/next.config.js @@ -27,6 +27,9 @@ const plugins = [ module.exports = withPlugins(plugins, { reactStrictMode: true, + eslint: { + ignoreDuringBuilds: true, + }, async rewrites() { return [ { diff --git a/js/packages/web/package.json b/js/packages/web/package.json index 57bed6e..e92224c 100644 --- a/js/packages/web/package.json +++ b/js/packages/web/package.json @@ -47,6 +47,7 @@ "prestart": "npm-link-shared ../common/node_modules/ . react", "start": "next dev", "build": "next build", + "start:prod": "next start", "test": "jest", "deploy:ar": "arweave deploy-dir ../../build/web --key-file ", "deploy": "gh-pages -d ../../build/web --repo https://github.com/metaplex-foundation/metaplex",