jbilcke-hf HF staff commited on
Commit
2525c9c
1 Parent(s): ac12f6c

simpler dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +29 -48
Dockerfile CHANGED
@@ -1,65 +1,46 @@
1
- FROM node:20-alpine AS base
 
2
 
3
- # Install dependencies only when needed
4
- FROM base AS deps
5
- # Check https://github.com/nodejs/docker-node/tree/b4117f9333da4138b03a546ec926ef50a31506c3#nodealpine to understand why libc6-compat might be needed.
6
- RUN apk add --no-cache libc6-compat
7
- WORKDIR /app
8
 
9
- # Install dependencies based on the preferred package manager
10
- COPY package.json yarn.lock* package-lock.json* pnpm-lock.yaml* ./
11
- RUN \
12
- if [ -f yarn.lock ]; then yarn --frozen-lockfile; \
13
- elif [ -f package-lock.json ]; then npm ci; \
14
- elif [ -f pnpm-lock.yaml ]; then yarn global add pnpm && pnpm i --frozen-lockfile; \
15
- else echo "Lockfile not found." && exit 1; \
16
- fi
17
-
18
- # Uncomment the following lines if you want to use a secret at buildtime,
19
- # for example to access your private npm packages
20
- # RUN --mount=type=secret,id=HF_EXAMPLE_SECRET,mode=0444,required=true \
21
- # $(cat /run/secrets/HF_EXAMPLE_SECRET)
22
-
23
- # Rebuild the source code only when needed
24
- FROM base AS builder
25
- WORKDIR /app
26
- COPY --from=deps /app/node_modules ./node_modules
27
- COPY . .
28
 
29
- # Next.js collects completely anonymous telemetry data about general usage.
30
- # Learn more here: https://nextjs.org/telemetry
31
- # Uncomment the following line in case you want to disable telemetry during the build.
32
- # ENV NEXT_TELEMETRY_DISABLED 1
33
 
34
- # RUN yarn build
35
 
36
- # If you use yarn, comment out this line and use the line above
37
- RUN npm run build
 
 
 
38
 
39
- # Production image, copy all the files and run next
40
- FROM base AS runner
 
 
41
  WORKDIR /app
42
 
43
- ENV NODE_ENV production
44
- # Uncomment the following line in case you want to disable telemetry during runtime.
45
- # ENV NEXT_TELEMETRY_DISABLED 1
 
 
 
 
46
 
47
- RUN addgroup --system --gid 1001 nodejs
48
- RUN adduser --system --uid 1001 nextjs
49
 
50
- COPY --from=builder /app/public ./public
 
51
 
52
- # Automatically leverage output traces to reduce image size
53
- # https://nextjs.org/docs/advanced-features/output-file-tracing
54
- COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./
55
- COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static
56
- COPY --from=builder --chown=nextjs:nodejs /app/.next/cache ./.next/cache
57
- # COPY --from=builder --chown=nextjs:nodejs /app/.next/cache/fetch-cache ./.next/cache/fetch-cache
58
 
59
- USER nextjs
60
 
61
  EXPOSE 3000
62
 
63
  ENV PORT 3000
64
 
65
- CMD ["npm", "run", "start"]
 
1
+ # And Node 20
2
+ FROM node:20-alpine
3
 
4
+ ARG DEBIAN_FRONTEND=noninteractive
 
 
 
 
5
 
6
+ RUN apk update
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7
 
8
+ # for dev mode
9
+ RUN apk add git git-lfs procps htop vim nano
 
 
10
 
11
+ RUN apk add alpine-sdk pkgconfig
12
 
13
+ # Set up a new user named "user" with user ID 1000
14
+ RUN adduser --disabled-password --uid 1001 user
15
+
16
+ # Switch to the "user" user
17
+ USER user
18
 
19
+ # Set home to the user's home directory
20
+ ENV PATH=.local/bin:$PATH
21
+
22
+ # Set the working directory to the user's home directory
23
  WORKDIR /app
24
 
25
+ # Install app dependencies
26
+ # A wildcard is used to ensure both package.json AND package-lock.json are copied
27
+ # where available (npm@5+)
28
+ COPY --chown=user package*.json /app
29
+
30
+ # make sure the .env is copied as well
31
+ COPY --chown=user .env /app
32
 
33
+ RUN ffmpeg -version
 
34
 
35
+ # Copy the current directory contents into the container at /app setting the owner to the user
36
+ COPY --chown=user . /app
37
 
38
+ RUN npm ci --force
 
 
 
 
 
39
 
40
+ RUN npm run build
41
 
42
  EXPOSE 3000
43
 
44
  ENV PORT 3000
45
 
46
+ CMD ["npm", "run", "start"]