docker container end up giving me 404 not found for nextjs app
Unanswered
HOTCONQUEROR posted this in #help-forum
my dockerfile:
#Installing and Prep Stage
FROM node:22-alpine AS prep
RUN apk add --no-cache g++ make py3-pip libc6-compat
WORKDIR /
# set the working directory in the container
COPY package*.json ./
# copy package.json from host machine to image current directory
RUN npm ci
# Build Stage
FROM prep AS build
WORKDIR /
ENV NEXT_TELEMETRY_DISABLED=1
COPY --from=prep ./node_modules ./node_modules
COPY . .
RUN --mount=type=secret,id=CONNECTION_STRING export CONNECTION_STRING="$(cat /run/secrets/CONNECTION_STRING)" && npm run build
# Running the app stage
FROM build AS run
WORKDIR /
COPY --from=build --chown=nextjs:nodejs /.next ./.next
COPY --from=build /node_modules ./node_modules
COPY --from=build /package.json ./package.json
COPY --from=build /public ./public
COPY --from=build /.next/standalone ./.next/standalone
COPY --from=build /.next/static ./.next/static
COPY . .
EXPOSE '3000'
CMD ["npm","run","dev"]
1 Reply
docker-compose:
version: '3.8'
services:
portfolio-app:
container_name: portfolio-container
build:
context: .
dockerfile: Dockerfile
secrets:
- CONNECTION_STRING
- EMAIL_FROM
- EMAIL_SERVER_HOST
- EMAIL_SERVER_PASSWORD
- EMAIL_SERVER_PORT
- EMAIL_SERVER_USER
- NEXTAUTH_SECRET
- NEXTAUTH_URL #provide secrets inside the build because they are needed during Dockerfile image build process
environment:
- PROD='1'
secrets:
- CONNECTION_STRING #providing secrets after the image build because they are needed for access to the container
- EMAIL_FROM
- EMAIL_SERVER_HOST
- EMAIL_SERVER_PASSWORD
- EMAIL_SERVER_PORT
- EMAIL_SERVER_USER
- NEXTAUTH_SECRET
- NEXTAUTH_URL
ports:
- '3000:3000'
depends_on:
- mongodb
mongodb:
image: mongo:latest
secrets:
- CONNECTION_STRING
ports:
- '27017:27017'
secrets:
CONNECTION_STRING:
file: ./run/secrets/CONNECTION_STRING
EMAIL_FROM:
file: ./run/secrets/EMAIL_FROM
EMAIL_SERVER_HOST:
file: ./run/secrets/EMAIL_SERVER_HOST
EMAIL_SERVER_PASSWORD:
file: ./run/secrets/EMAIL_SERVER_PASSWORD
EMAIL_SERVER_PORT:
file: ./run/secrets/EMAIL_SERVER_PORT
EMAIL_SERVER_USER:
file: ./run/secrets/EMAIL_SERVER_USER
NEXTAUTH_SECRET:
file: ./run/secrets/NEXTAUTH_SECRET
NEXTAUTH_URL:
file: ./run/secrets/NEXTAUTH_URL