From 3046c441d10f0de99b628af42cf5da6b6b038f07 Mon Sep 17 00:00:00 2001 From: alfo-dev <210219969+alfo-dev@users.noreply.github.com> Date: Sun, 18 May 2025 17:15:52 +0200 Subject: [PATCH] add Docker support --- .dockerignore | 15 +++++++++++++++ Dockerfile | 29 +++++++++++++++++++++++++++++ package.json | 15 +++++++++------ 3 files changed, 53 insertions(+), 6 deletions(-) create mode 100644 .dockerignore create mode 100644 Dockerfile diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..8d0bcd1 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,15 @@ +# common +**/.dockerignore +**/.git +**/.gitattributes +**/.gitignore +**/node_modules + +# specific +**/.codesandbox +**/demo +**/out + +# hidden +.* + diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..f706bd7 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,29 @@ +# Build Server +FROM node:23-alpine AS base + +RUN mkdir -p /out && chown node:node /out + +WORKDIR /out + +USER node + +FROM base AS builder + +COPY --chown=node:node . . + +RUN npm install && npm run build:server + +# Run Server +FROM base + +COPY --from=builder --chown=node:node ./out/out . + +# env variable for port +ENV PORT=4324 +ENV HOST=0.0.0.0 + +# Expose port from env variable +EXPOSE ${PORT} + +CMD [ "node", "./preview-server.js" ] + diff --git a/package.json b/package.json index 96aaa62..82ba852 100644 --- a/package.json +++ b/package.json @@ -16,13 +16,14 @@ "scripts": { "build:relay": "node -r esbuild-register ./build-relay.ts", "build:types": "tsc -p tsconfig.types.json", - "build:lib": "esbuild ./src/lib/main.ts --bundle --outdir=out/lib --format=cjs && pnpm build:types", + "build:lib": "esbuild ./src/lib/main.ts --bundle --outdir=out/lib --format=cjs && npm run build:types", "build:demo": "node -r esbuild-register ./build-demo.ts", - "build": "rm -rf out && pnpm build:lib && pnpm build:relay && pnpm build:demo", - "build:prod": "MINIFY=true && pnpm build", - "start:demo": "pnpm build && node -r esbuild-register ./servers/demo-server.ts", - "start:preview": "pnpm build && node -r esbuild-register ./servers/preview-server.ts", - "prepack": "pnpm build" + "build": "rm -rf out && npm run build:lib && npm run build:relay && npm run build:demo", + "build:prod": "MINIFY=true && npm run build", + "build:server": "rm -rf out && npm run build:prod && esbuild ./servers/preview-server.ts --bundle --platform=node --outdir=out --format=cjs ", + "start:demo": "npm run build && node -r esbuild-register ./servers/demo-server.ts", + "start:preview": "npm run build && node -r esbuild-register ./servers/preview-server.ts", + "prepack": "npm run build" }, "devDependencies": { "@fastify/static": "^8.1.1", @@ -44,3 +45,5 @@ "outvariant": "^1.3.0" } } + +