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" } } + +