diff --git a/.dockerignore b/.dockerignore deleted file mode 100644 index 60736c5..0000000 --- a/.dockerignore +++ /dev/null @@ -1,4 +0,0 @@ -*/**/node_modules/ -*/**/lib -.husky/ -node_modules/ \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index 2b4a453..629a61e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,36 +1,19 @@ -FROM node:20.18.1 AS builder +FROM public.ecr.aws/bitnami/node:20.18.1 +RUN apt-get install git +ENV NODE_ENV=production +RUN npm install -g typescript WORKDIR /app - -# Copy package files first to leverage cache -COPY package.json yarn.lock ./ -COPY drift-common/protocol/sdk/package.json ./drift-common/protocol/sdk/ -COPY drift-common/common-ts/package.json ./drift-common/common-ts/ - -RUN npm install -g bun typescript husky - +COPY drift-common /app/drift-common +COPY . . WORKDIR /app/drift-common/protocol/sdk -COPY drift-common/protocol/sdk/ . -RUN bun install && bun run build - +RUN yarn +RUN yarn build WORKDIR /app/drift-common/common-ts -COPY drift-common/common-ts/ . -RUN bun install && bun run build - +RUN yarn +RUN yarn build WORKDIR /app -COPY . . -# no '--production' for esbuild -RUN bun install && bun esbuild.config.js - -FROM node:20.18.1-alpine -# 'bigint-buffer' native lib for performance -# @triton-one/yellowstone-grpc so .wasm lib included -RUN apk add python3 make g++ --virtual .build &&\ - npm install -C /lib bigint-buffer @triton-one/yellowstone-grpc &&\ - apk del .build -COPY --from=builder /app/lib/ ./lib/ +RUN yarn +RUN yarn build -ENV NODE_ENV=production EXPOSE 9464 - -CMD ["node", "./lib/index.js"] \ No newline at end of file diff --git a/esbuild.config.js b/esbuild.config.js deleted file mode 100644 index b269b11..0000000 --- a/esbuild.config.js +++ /dev/null @@ -1,28 +0,0 @@ -const esbuild = require('esbuild'); -const glob = require('tiny-glob'); - -const commonConfig = { - bundle: true, - platform: 'node', - target: 'node20', - sourcemap: false, - // minify: true, makes messy debug/error output - treeShaking: true, - legalComments: 'none', - mainFields: ['module', 'main'], - metafile: true, - format: 'cjs', - external: [ - 'bigint-buffer', - '@triton-one/yellowstone-grpc' - ] -}; - -(async () => { - let entryPoints = await glob("./src/**/*.ts"); - await esbuild.build({ - ...commonConfig, - entryPoints, - outdir: 'lib', - }); -})().catch(() => process.exit(1)); diff --git a/package.json b/package.json index 2976c56..6765ccd 100644 --- a/package.json +++ b/package.json @@ -6,8 +6,8 @@ "license": "Apache-2.0", "dependencies": { "@coral-xyz/anchor": "^0.29.0", - "@drift-labs/sdk": "file:./drift-common/protocol/sdk", "@drift/common": "file:./drift-common/common-ts", + "@drift-labs/sdk": "file:./drift-common/protocol/sdk", "@opentelemetry/api": "^1.1.0", "@opentelemetry/auto-instrumentations-node": "^0.31.1", "@opentelemetry/exporter-prometheus": "^0.31.0", @@ -33,6 +33,7 @@ "response-time": "^2.3.2", "rxjs": "^7.8.1", "socket.io-redis": "^6.1.1", + "typescript": "4.5.4", "undici": "^6.16.1", "winston": "^3.8.1", "ws": "^8.14.2" @@ -41,14 +42,12 @@ "@types/k6": "^0.45.0", "@typescript-eslint/eslint-plugin": "^4.28.0", "@typescript-eslint/parser": "^4.28.0", - "esbuild": "^0.24.0", "eslint": "^7.29.0", "eslint-config-prettier": "^8.3.0", "eslint-plugin-prettier": "^3.4.0", "husky": "^7.0.4", "k6": "^0.0.0", "prettier": "^2.4.1", - "tiny-glob": "^0.2.9", "ts-node": "^10.9.1" }, "scripts": {