diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..e961099d --- /dev/null +++ b/Dockerfile @@ -0,0 +1,34 @@ +FROM node:lts-alpine + +# Working directory +WORKDIR /app + +# Install dependencies +RUN npm install -g pnpm@7.1.9 + +# Install plugins and sdk dependency +COPY ./server/packages ./server/packages +COPY ./server/plugins ./server/plugins +COPY ./server/package.json ./server/package.json +COPY ./package.json ./pnpm-lock.yaml ./pnpm-workspace.yaml ./tsconfig.json ./.npmrc ./ +RUN pnpm install + +# Copy source +COPY . . +RUN pnpm install + +# Build and cleanup +ENV NODE_ENV=production +RUN cd server && \ + pnpm run build && \ + # Install plugins(whitelist) + pnpm run plugin:install com.msgbyte.tasks com.msgbyte.linkmeta com.msgbyte.github com.msgbyte.simplenotify + +# Copy public files +RUN cd server && mkdir -p ./dist/public && cp -r ./public/plugins ./dist/public && cp ./public/registry.json ./dist/public + +# web static service port +EXPOSE 3000 + +# Start server +CMD ["pnpm", "start:service"] diff --git a/package.json b/package.json index df1e48c7..72a29284 100644 --- a/package.json +++ b/package.json @@ -7,6 +7,7 @@ "dev": "concurrently -k npm:dev:web npm:dev:server", "dev:web": "cd client/web && pnpm run dev", "dev:server": "cd server && pnpm run dev", + "start:service": "cd server && pnpm run start:service", "preinstall": "npx only-allow pnpm", "lint:fix": "eslint --fix './**/*.{ts,tsx}'", "prepare": "husky install"