diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..6034042 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,17 @@ +Dockerfile +.dockerignore +.git +.gitignore +.gitattributes +README.md +.npmrc +.prettierrc +.eslintrc.cjs +.graphqlrc +.editorconfig +.vscode +node_modules +build +package +**/.env +.env* diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..1f11d57 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,20 @@ +ARG NODE_VERSION=24.6.0 + +FROM node:${NODE_VERSION}-alpine AS builder +WORKDIR /app +COPY package*.json ./ +RUN --mount=type=bind,source=package.json,target=package.json \ + --mount=type=bind,source=package-lock.json,target=package-lock.json \ + --mount=type=cache,target=/root/.npm \ + npm ci +COPY . . +RUN npm prune --production + +FROM node:${NODE_VERSION}-alpine +WORKDIR /app +COPY --from=builder /app/node_modules node_modules/ +COPY --from=builder /app/index.js . +USER node +EXPOSE 12345 +ENV NODE_ENV=production +CMD [ "node", "."] diff --git a/package.json b/package.json index adda98d..3d7805a 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,8 @@ "type": "module", "main": "index.js", "scripts": { - "dev": "node index.js" + "dev": "node index.js", + "docker-build": "docker build -t jeopardyserver ." }, "dependencies": { "ws": "^8.18.3"