[ad_1]
I need to deploy a personal nextjs project, but during the build I get this error:
I created a droplet on DigitalOcean and I made it run with docker.
This is my Dockerfile
:
# Install dependencies only when needed
FROM node:16-alpine AS deps
# 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
WORKDIR /app
COPY package.json yarn.lock ./
RUN yarn install --frozen-lockfile
# If using npm with a `package-lock.json` comment out above and use below instead
# COPY package.json package-lock.json ./
# RUN npm ci
# Rebuild the source code only when needed
FROM node:16-alpine AS builder
WORKDIR /app
COPY --from=deps /app/node_modules ./node_modules
COPY . .
# Next.js collects completely anonymous telemetry data about general usage.
# Learn more here: https://nextjs.org/telemetry
# Uncomment the following line in case you want to disable telemetry during the build.
# ENV NEXT_TELEMETRY_DISABLED 1
RUN yarn build
# If using npm comment out above and use below instead
# RUN npm run build
# Production image, copy all the files and run next
FROM node:16-alpine AS runner
WORKDIR /app
ENV NODE_ENV production
# Uncomment the following line in case you want to disable telemetry during runtime.
# ENV NEXT_TELEMETRY_DISABLED 1
RUN addgroup --system --gid 1001 nodejs
RUN adduser --system --uid 1001 nextjs
# You only need to copy next.config.js if you are NOT using the default configuration
# COPY --from=builder /app/next.config.js ./
COPY --from=builder /app/public ./public
COPY --from=builder /app/package.json ./package.json
# Automatically leverage output traces to reduce image size
# https://nextjs.org/docs/advanced-features/output-file-tracing
COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./
COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static
USER nextjs
EXPOSE 3000
ENV PORT 3000
CMD ["node", "server.js"]
And this is my docker-compose.yml
version: "3.3"
services:
traefik:
image: "traefik:v2.7"
container_name: "traefik"
command:
#- "--log.level=DEBUG"
- "--api.insecure=true"
- "--providers.docker=true"
- "--providers.docker.exposedbydefault=false"
- "[email protected]"
- "--certificatesresolvers.myresolver.acme.storage=acme.json"
- "--certificatesresolvers.myresolver.acme.httpchallenge=true"
- "--certificatesresolvers.myresolver.acme.httpchallenge.entrypoint=web"
- "--entrypoints.web.address=:80"
- "--entrypoints.websecure.address=:443"
ports:
- "80:80"
- "443:443"
- "8080:8080"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock:ro"
project_name:
build: project_name-frontend/.
labels:
- "traefik.enable=true"
- "traefik.http.routers.domain_name.rule=Host(`my_domain.com`) || Host(`www.my_domain.com`)"
- "traefik.http.routers.domain_name.entrypoints=websecure"
- "traefik.http.routers.domain_name.tls=true"
- "traefik.http.routers.domain_name.tls.certresolver=myresolver"
# www -> https
- "traefik.http.routers.http-catchallwww.rule=Host(`www.domain_name.com`)"
- "traefik.http.routers.http-catchallwww.entrypoints=web"
- "traefik.http.routers.http-catchallwww.middlewares=redirect-to-https@docker"
- "traefik.http.middlewares.http-catchallwww.redirectscheme.scheme=https"
# www -> non-www
- "traefik.http.middlewares.www-redirect.redirectregex.regex=^https://www.my_domain.com/(.*)"
- "traefik.http.middlewares.www-redirect.redirectregex.replacement=https://my_domain.com/$${1}"
- "traefik.http.middlewares.www-redirect.redirectregex.permanent=true"
- "traefik.http.routers.http-catchallwww.middlewares=www-redirect"
environment:
NEXT_PUBLIC_FRONTEND_URL: https://my-domain.com
MONGO_URI: my_mongo_uri
//more env variables
I am stuck here and can’t go forward. I found this answer, but it didn’t work to me. Locally I can make the build with yarn build
. What do you think is the problem? Could it be the machine environment? I have already deployed once, but the project was basically empty. Now that I have a lot of stuff in it I am getting the error above.
Thank you
[ad_2]