Dockerize for running in production
This commit is contained in:
parent
591ccc361b
commit
c7d3f92558
7
.dockerignore
Normal file
7
.dockerignore
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
# Don't copy node_modules
|
||||||
|
node_modules
|
||||||
|
|
||||||
|
# Ignore common folders that we do not need
|
||||||
|
.next
|
||||||
|
.github
|
||||||
|
.vscode
|
37
Dockerfile
Normal file
37
Dockerfile
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
FROM docker.io/library/node:18-alpine AS build-env
|
||||||
|
|
||||||
|
# Disable telemetry
|
||||||
|
ENV NEXT_TELEMETRY_DISABLED 1
|
||||||
|
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
# Building app
|
||||||
|
COPY package*.json ./
|
||||||
|
|
||||||
|
# Install node modules
|
||||||
|
# Note: We also install dev deps as TypeScript may be needed
|
||||||
|
RUN npm install
|
||||||
|
|
||||||
|
# Copy files. Use dockerignore to avoid copying node_modules
|
||||||
|
COPY . .
|
||||||
|
|
||||||
|
# Build
|
||||||
|
RUN npm run build
|
||||||
|
|
||||||
|
# Running the app
|
||||||
|
FROM gcr.io/distroless/nodejs:18 AS runner
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
# Mark as prod, disable telemetry, set port
|
||||||
|
ENV NODE_ENV production
|
||||||
|
ENV PORT 3000
|
||||||
|
ENV NEXT_TELEMETRY_DISABLED 1
|
||||||
|
|
||||||
|
# Copy from build
|
||||||
|
COPY --from=build-env /app/next.config.mjs ./
|
||||||
|
COPY --from=build-env /app/public ./public
|
||||||
|
COPY --from=build-env /app/.next ./.next
|
||||||
|
COPY --from=build-env /app/node_modules ./node_modules
|
||||||
|
|
||||||
|
# Run app command
|
||||||
|
CMD ["./node_modules/next/dist/bin/next", "start"]
|
14
package-lock.json
generated
14
package-lock.json
generated
@ -42,7 +42,7 @@
|
|||||||
"eslint-config-next": "13.4.16",
|
"eslint-config-next": "13.4.16",
|
||||||
"prettier": "^3.0.1",
|
"prettier": "^3.0.1",
|
||||||
"prettier-plugin-tailwindcss": "^0.5.2",
|
"prettier-plugin-tailwindcss": "^0.5.2",
|
||||||
"sharp": "^0.32.0"
|
"sharp": "0.32.6"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@aashutoshrathi/word-wrap": {
|
"node_modules/@aashutoshrathi/word-wrap": {
|
||||||
@ -8714,9 +8714,9 @@
|
|||||||
"integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw=="
|
"integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw=="
|
||||||
},
|
},
|
||||||
"node_modules/sharp": {
|
"node_modules/sharp": {
|
||||||
"version": "0.32.4",
|
"version": "0.32.6",
|
||||||
"resolved": "https://registry.npmjs.org/sharp/-/sharp-0.32.4.tgz",
|
"resolved": "https://registry.npmjs.org/sharp/-/sharp-0.32.6.tgz",
|
||||||
"integrity": "sha512-exUnZewqVZC6UXqXuQ8fyJJv0M968feBi04jb9GcUHrWtkRoAKnbJt8IfwT4NJs7FskArbJ14JAFGVuooszoGg==",
|
"integrity": "sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"hasInstallScript": true,
|
"hasInstallScript": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@ -16578,9 +16578,9 @@
|
|||||||
"integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw=="
|
"integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw=="
|
||||||
},
|
},
|
||||||
"sharp": {
|
"sharp": {
|
||||||
"version": "0.32.4",
|
"version": "0.32.6",
|
||||||
"resolved": "https://registry.npmjs.org/sharp/-/sharp-0.32.4.tgz",
|
"resolved": "https://registry.npmjs.org/sharp/-/sharp-0.32.6.tgz",
|
||||||
"integrity": "sha512-exUnZewqVZC6UXqXuQ8fyJJv0M968feBi04jb9GcUHrWtkRoAKnbJt8IfwT4NJs7FskArbJ14JAFGVuooszoGg==",
|
"integrity": "sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"color": "^4.2.3",
|
"color": "^4.2.3",
|
||||||
|
@ -35,6 +35,7 @@
|
|||||||
"react": "18.2.0",
|
"react": "18.2.0",
|
||||||
"react-dom": "18.2.0",
|
"react-dom": "18.2.0",
|
||||||
"remark-gfm": "^3.0.1",
|
"remark-gfm": "^3.0.1",
|
||||||
|
"sharp": "0.32.6",
|
||||||
"stripe": "14.9.0",
|
"stripe": "14.9.0",
|
||||||
"tailwindcss": "^3.3.3",
|
"tailwindcss": "^3.3.3",
|
||||||
"typescript": "5.1.6"
|
"typescript": "5.1.6"
|
||||||
@ -43,7 +44,6 @@
|
|||||||
"eslint": "8.45.0",
|
"eslint": "8.45.0",
|
||||||
"eslint-config-next": "13.4.16",
|
"eslint-config-next": "13.4.16",
|
||||||
"prettier": "^3.0.1",
|
"prettier": "^3.0.1",
|
||||||
"prettier-plugin-tailwindcss": "^0.5.2",
|
"prettier-plugin-tailwindcss": "^0.5.2"
|
||||||
"sharp": "^0.32.0"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user