From 907c774300c5e680c2c451ac3547640a64262b9c Mon Sep 17 00:00:00 2001 From: soulsam480 Date: Tue, 15 Nov 2022 23:51:43 +0530 Subject: [PATCH 1/2] chore: added api dockerfile wip --- Dockerfile | 32 ++++++++++++++++++++++++++++++++ api/package.json | 7 ++----- package.json | 5 +++-- pnpm-lock.yaml | 39 +++++++++++++++++++++++---------------- 4 files changed, 60 insertions(+), 23 deletions(-) create mode 100644 Dockerfile diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..a2c4537 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,32 @@ +FROM node:16.14.2-alpine as pnpm +ENV PNPM_VERSION 7.14.2 +RUN apk --no-cache add curl +RUN curl -sL https://unpkg.com/@pnpm/self-installer | node + +FROM pnpm as install +ENV NPM_CONFIG_LOGLEVEL error +WORKDIR /usr/src/app +COPY pnpm-lock.yaml ./ +COPY pnpm-workspace.yaml ./ +COPY api/package.json ./api/package.json +COPY *.json ./ +COPY schema ./schema +COPY prisma ./prisma +RUN pnpm install --frozen-lockfile +COPY . . +RUN pnpm build:api + + +FROM install as builder +WORKDIR /usr/src/app +COPY pnpm-lock.yaml ./ +COPY pnpm-workspace.yaml ./ +COPY api/package.json ./api/package.json +COPY package.json ./ +COPY schema ./schema +COPY prisma ./prisma +RUN pnpm install --frozen-lockfile --shamefully-hoist --reporter=append-only --filter @mirai/api && \ pnpm store prune && \ rm -rf ~/.pnpm-store +COPY --from=builder /usr/src/app/api/dist ./api/dist +EXPOSE 4444 + +CMD ["npm", "run", "start:api"] \ No newline at end of file diff --git a/api/package.json b/api/package.json index 918668b..c74511d 100644 --- a/api/package.json +++ b/api/package.json @@ -15,7 +15,6 @@ "build": "tsc", "start-1": "prisma migrate deploy --schema=../prisma/schema.prisma", "start-2": "cross-env NODE_ENV=production node dist/app.js", - "postinstall": "prisma generate --schema=../prisma/schema.prisma", "start": "run-s start-*", "studio": "cross-env DATABASE_URL=postgresql://postgres:@localhost:5632/mirai prisma studio --schema=../prisma/schema.prisma" }, @@ -35,11 +34,10 @@ "dotenv": "^16.0.3", "fastify": "^4.8.1", "fastify-plugin": "^4.3.0", - "next-auth": "*", "pg-boss": "^8.1.1", "pino": "^8.6.1", "pino-pretty": "^9.1.1", - "prisma": "^4.6.1", + "prisma": "*", "prisma-exclude": "^1.0.2", "superjson": "^1.11.0", "ts-node-dev": "^2.0.0" @@ -47,7 +45,6 @@ "devDependencies": { "@mirai/schema": "workspace:*", "@swc/core": "*", - "@types/ws": "^8.5.3", - "typescript": "*" + "@types/ws": "^8.5.3" } } diff --git a/package.json b/package.json index 20b0a18..78659d1 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,8 @@ "type-check": "tsc --pretty --noEmit --incremental --tsBuildInfoFile \"temp/.tsBuildInfo\" -p tsconfig.check.json", "build-schema": "pnpm run --filter @mirai/schema build", "dev:schema": "pnpm run --filter @mirai/schema dev", - "postinstall": "pnpm run build-schema" + "postinstall": "run-s build-schema prisma:generate", + "prisma:generate": "prisma generate --schema=./prisma/schema.prisma" }, "lint-staged": { "*.{js,ts,tsx}": [ @@ -31,7 +32,6 @@ }, "dependencies": { "@mirai/api": "workspace:*", - "@mirai/app": "workspace:*", "@prisma/client": "^4.6.1", "bcryptjs": "^2.4.3", "cross-env": "^7.0.3", @@ -71,6 +71,7 @@ "prettier-plugin-tailwindcss": "^0.1.13", "ts-node": "^10.9.1", "typescript": "^4.8.4", + "prisma": "^4.6.1", "unplugin-icons": "^0.14.13" }, "private": true, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 45f0ddb..5da841f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5,7 +5,6 @@ importers: .: specifiers: '@mirai/api': workspace:* - '@mirai/app': workspace:* '@prisma/client': ^4.6.1 '@types/bcryptjs': ^2.4.2 '@types/jsonwebtoken': ^8.5.9 @@ -39,6 +38,7 @@ importers: npm-run-all: ^4.1.5 prettier: ^2.7.1 prettier-plugin-tailwindcss: ^0.1.13 + prisma: ^4.6.1 rimraf: ^3.0.2 ts-node: ^10.9.1 typescript: ^4.8.4 @@ -46,8 +46,7 @@ importers: zod: ^3.19.1 dependencies: '@mirai/api': link:api - '@mirai/app': link:app - '@prisma/client': 4.6.1 + '@prisma/client': 4.6.1_prisma@4.6.1 bcryptjs: 2.4.3 cross-env: 7.0.3 dayjs: 1.11.6 @@ -83,6 +82,7 @@ importers: npm-run-all: 4.1.5 prettier: 2.7.1 prettier-plugin-tailwindcss: 0.1.13_prettier@2.7.1 + prisma: 4.6.1 ts-node: 10.9.1_lw7q66ikwuedwcorwkk4v6trsa typescript: 4.8.4 unplugin-icons: 0.14.13 @@ -101,15 +101,13 @@ importers: dotenv: ^16.0.3 fastify: ^4.8.1 fastify-plugin: ^4.3.0 - next-auth: '*' pg-boss: ^8.1.1 pino: ^8.6.1 pino-pretty: ^9.1.1 - prisma: ^4.6.1 + prisma: '*' prisma-exclude: ^1.0.2 superjson: ^1.11.0 ts-node-dev: ^2.0.0 - typescript: '*' dependencies: '@fastify/autoload': 5.4.1 '@fastify/cookie': 8.3.0 @@ -120,19 +118,17 @@ importers: dotenv: 16.0.3 fastify: 4.9.2 fastify-plugin: 4.3.0 - next-auth: 4.16.4 pg-boss: 8.1.1 pino: 8.7.0 pino-pretty: 9.1.1 prisma: 4.6.1 prisma-exclude: 1.0.2 superjson: 1.11.0 - ts-node-dev: 2.0.0_6yqwcne7hyxkofmgunm52xhmgy + ts-node-dev: 2.0.0_@swc+core@1.3.9 devDependencies: '@mirai/schema': link:../schema '@swc/core': 1.3.9 '@types/ws': 8.5.3 - typescript: 4.8.4 app: specifiers: @@ -1007,6 +1003,20 @@ packages: '@prisma/engines-version': 4.6.1-3.694eea289a8462c80264df36757e4fdc129b1b32 dev: false + /@prisma/client/4.6.1_prisma@4.6.1: + resolution: {integrity: sha512-M1+NNrMzqaOIxT7PBGcTs3IZo7d1EW/+gVQd4C4gUgWBDGgD9AcIeZnUSidgWClmpMSgVUdnVORjsWWGUameYA==} + engines: {node: '>=14.17'} + requiresBuild: true + peerDependencies: + prisma: '*' + peerDependenciesMeta: + prisma: + optional: true + dependencies: + '@prisma/engines-version': 4.6.1-3.694eea289a8462c80264df36757e4fdc129b1b32 + prisma: 4.6.1 + dev: false + /@prisma/engines-version/4.6.1-3.694eea289a8462c80264df36757e4fdc129b1b32: resolution: {integrity: sha512-HUCmkXAU2jqp2O1RvNtbE+seLGLyJGEABZS/R38rZjSAafAy0WzBuHq+tbZMnD+b5OSCsTVtIPVcuvx1ySxcWQ==} dev: false @@ -1014,7 +1024,6 @@ packages: /@prisma/engines/4.6.1: resolution: {integrity: sha512-3u2/XxvxB+Q7cMXHnKU0CpBiUK1QWqpgiBv28YDo1zOIJE3FCF8DI2vrp6vuwjGt5h0JGXDSvmSf4D4maVjJdw==} requiresBuild: true - dev: false /@rushstack/eslint-patch/1.2.0: resolution: {integrity: sha512-sXo/qW2/pAcmT43VoRKOJbDOfV3cYpq3szSVfIThQXNt+E4DfKj361vaAt3c88U5tPUxzEswam7GW48PJqtKAg==} @@ -5005,7 +5014,6 @@ packages: requiresBuild: true dependencies: '@prisma/engines': 4.6.1 - dev: false /process-warning/2.0.0: resolution: {integrity: sha512-+MmoAXoUX+VTHAlwns0h+kFUWFs/3FZy+ZuchkgjyOu3oioLAo2LB5aCfKPh2+P9O18i3m43tUEv3YqttSy0Ww==} @@ -5841,7 +5849,7 @@ packages: resolution: {integrity: sha512-Z86EW+fFFh/IFB1fqQ3/+7Zpf9t2ebOAxNI/V6Wo7r5gqiqtxmgTlQ1qbqQcjLKYeSHPTsEmvlJUDg/EuL0uHQ==} dev: false - /ts-node-dev/2.0.0_6yqwcne7hyxkofmgunm52xhmgy: + /ts-node-dev/2.0.0_@swc+core@1.3.9: resolution: {integrity: sha512-ywMrhCfH6M75yftYvrvNarLEY+SUXtUvU8/0Z6llrHQVBx12GiFk5sStF8UdfE/yfzk9IAq7O5EEbTQsxlBI8w==} engines: {node: '>=0.8.0'} hasBin: true @@ -5860,16 +5868,15 @@ packages: rimraf: 2.7.1 source-map-support: 0.5.21 tree-kill: 1.2.2 - ts-node: 10.9.1_6yqwcne7hyxkofmgunm52xhmgy + ts-node: 10.9.1_@swc+core@1.3.9 tsconfig: 7.0.0 - typescript: 4.8.4 transitivePeerDependencies: - '@swc/core' - '@swc/wasm' - '@types/node' dev: false - /ts-node/10.9.1_6yqwcne7hyxkofmgunm52xhmgy: + /ts-node/10.9.1_@swc+core@1.3.9: resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true peerDependencies: @@ -5895,7 +5902,6 @@ packages: create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 4.8.4 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 dev: false @@ -5996,6 +6002,7 @@ packages: resolution: {integrity: sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==} engines: {node: '>=4.2.0'} hasBin: true + dev: true /unbox-primitive/1.0.2: resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} From 0d7bc928709ba3097e4f89f9c7e4565f442acad1 Mon Sep 17 00:00:00 2001 From: soulsam480 Date: Sat, 19 Nov 2022 22:58:28 +0530 Subject: [PATCH 2/2] chore: updates to dockerfile --- Dockerfile | 6 ++++-- api/package.json | 8 +++++--- app/package.json | 4 ++-- package.json | 6 ++---- pnpm-lock.yaml | 12 ++++++------ 5 files changed, 19 insertions(+), 17 deletions(-) diff --git a/Dockerfile b/Dockerfile index a2c4537..17ab2f8 100644 --- a/Dockerfile +++ b/Dockerfile @@ -25,8 +25,10 @@ COPY api/package.json ./api/package.json COPY package.json ./ COPY schema ./schema COPY prisma ./prisma -RUN pnpm install --frozen-lockfile --shamefully-hoist --reporter=append-only --filter @mirai/api && \ pnpm store prune && \ rm -rf ~/.pnpm-store -COPY --from=builder /usr/src/app/api/dist ./api/dist +RUN pnpm install --frozen-lockfile --ignore-scripts --reporter=append-only --filter @mirai/api && \ + pnpm store prune && \ + rm -rf ~/.pnpm-store +COPY --from=install /usr/src/app/api/dist ./api/dist EXPOSE 4444 CMD ["npm", "run", "start:api"] \ No newline at end of file diff --git a/api/package.json b/api/package.json index c74511d..9c5fa45 100644 --- a/api/package.json +++ b/api/package.json @@ -15,8 +15,9 @@ "build": "tsc", "start-1": "prisma migrate deploy --schema=../prisma/schema.prisma", "start-2": "cross-env NODE_ENV=production node dist/app.js", - "start": "run-s start-*", - "studio": "cross-env DATABASE_URL=postgresql://postgres:@localhost:5632/mirai prisma studio --schema=../prisma/schema.prisma" + "start": "npm run start-1 && npm run start 2", + "studio": "cross-env DATABASE_URL=postgresql://postgres:@localhost:5632/mirai prisma studio --schema=../prisma/schema.prisma", + "postinstall": "prisma generate --schema=../prisma/schema.prisma" }, "prisma": { "seed": "pnpm ts-node ../prisma/seed.ts" @@ -37,9 +38,10 @@ "pg-boss": "^8.1.1", "pino": "^8.6.1", "pino-pretty": "^9.1.1", - "prisma": "*", + "prisma": "^4.6.1", "prisma-exclude": "^1.0.2", "superjson": "^1.11.0", + "@prisma/client": "*", "ts-node-dev": "^2.0.0" }, "devDependencies": { diff --git a/app/package.json b/app/package.json index c97592b..a2037b6 100644 --- a/app/package.json +++ b/app/package.json @@ -16,7 +16,6 @@ "@headlessui/react": "^1.7.4", "@hookform/resolvers": "^2.9.9", "@popperjs/core": "^2.11.6", - "@prisma/client": "*", "@trpc/client": "^9.27.4", "@trpc/next": "^9.27.4", "@trpc/react": "^9.27.4", @@ -39,7 +38,8 @@ "reconnecting-websocket": "^4.4.0", "superjson": "^1.11.0", "ws": "^8.11.0", - "@mirai/schema": "workspace:*" + "@mirai/schema": "workspace:*", + "@prisma/client": "*" }, "devDependencies": { "@iconify-json/ph": "^1.1.2", diff --git a/package.json b/package.json index 78659d1..221df43 100644 --- a/package.json +++ b/package.json @@ -21,8 +21,7 @@ "type-check": "tsc --pretty --noEmit --incremental --tsBuildInfoFile \"temp/.tsBuildInfo\" -p tsconfig.check.json", "build-schema": "pnpm run --filter @mirai/schema build", "dev:schema": "pnpm run --filter @mirai/schema dev", - "postinstall": "run-s build-schema prisma:generate", - "prisma:generate": "prisma generate --schema=./prisma/schema.prisma" + "postinstall": "run-s build-schema" }, "lint-staged": { "*.{js,ts,tsx}": [ @@ -32,7 +31,6 @@ }, "dependencies": { "@mirai/api": "workspace:*", - "@prisma/client": "^4.6.1", "bcryptjs": "^2.4.3", "cross-env": "^7.0.3", "dayjs": "^1.11.6", @@ -45,6 +43,7 @@ }, "devDependencies": { "@types/bcryptjs": "^2.4.2", + "@prisma/client": "^4.6.1", "@types/jsonwebtoken": "^8.5.9", "@types/lodash": "^4.14.186", "@types/node": "^18.11.0", @@ -71,7 +70,6 @@ "prettier-plugin-tailwindcss": "^0.1.13", "ts-node": "^10.9.1", "typescript": "^4.8.4", - "prisma": "^4.6.1", "unplugin-icons": "^0.14.13" }, "private": true, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5da841f..2360787 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -38,7 +38,6 @@ importers: npm-run-all: ^4.1.5 prettier: ^2.7.1 prettier-plugin-tailwindcss: ^0.1.13 - prisma: ^4.6.1 rimraf: ^3.0.2 ts-node: ^10.9.1 typescript: ^4.8.4 @@ -46,7 +45,6 @@ importers: zod: ^3.19.1 dependencies: '@mirai/api': link:api - '@prisma/client': 4.6.1_prisma@4.6.1 bcryptjs: 2.4.3 cross-env: 7.0.3 dayjs: 1.11.6 @@ -57,6 +55,7 @@ importers: rimraf: 3.0.2 zod: 3.19.1 devDependencies: + '@prisma/client': 4.6.1 '@types/bcryptjs': 2.4.2 '@types/jsonwebtoken': 8.5.9 '@types/lodash': 4.14.186 @@ -82,7 +81,6 @@ importers: npm-run-all: 4.1.5 prettier: 2.7.1 prettier-plugin-tailwindcss: 0.1.13_prettier@2.7.1 - prisma: 4.6.1 ts-node: 10.9.1_lw7q66ikwuedwcorwkk4v6trsa typescript: 4.8.4 unplugin-icons: 0.14.13 @@ -94,6 +92,7 @@ importers: '@fastify/cors': ^8.2.0 '@fastify/websocket': ^7.1.1 '@mirai/schema': workspace:* + '@prisma/client': '*' '@swc/core': '*' '@swc/helpers': ^0.4.12 '@trpc/server': ^9.27.4 @@ -104,7 +103,7 @@ importers: pg-boss: ^8.1.1 pino: ^8.6.1 pino-pretty: ^9.1.1 - prisma: '*' + prisma: ^4.6.1 prisma-exclude: ^1.0.2 superjson: ^1.11.0 ts-node-dev: ^2.0.0 @@ -113,6 +112,7 @@ importers: '@fastify/cookie': 8.3.0 '@fastify/cors': 8.2.0 '@fastify/websocket': 7.1.1 + '@prisma/client': 4.6.1_prisma@4.6.1 '@swc/helpers': 0.4.12 '@trpc/server': 9.27.4 dotenv: 16.0.3 @@ -1001,7 +1001,6 @@ packages: optional: true dependencies: '@prisma/engines-version': 4.6.1-3.694eea289a8462c80264df36757e4fdc129b1b32 - dev: false /@prisma/client/4.6.1_prisma@4.6.1: resolution: {integrity: sha512-M1+NNrMzqaOIxT7PBGcTs3IZo7d1EW/+gVQd4C4gUgWBDGgD9AcIeZnUSidgWClmpMSgVUdnVORjsWWGUameYA==} @@ -1019,11 +1018,11 @@ packages: /@prisma/engines-version/4.6.1-3.694eea289a8462c80264df36757e4fdc129b1b32: resolution: {integrity: sha512-HUCmkXAU2jqp2O1RvNtbE+seLGLyJGEABZS/R38rZjSAafAy0WzBuHq+tbZMnD+b5OSCsTVtIPVcuvx1ySxcWQ==} - dev: false /@prisma/engines/4.6.1: resolution: {integrity: sha512-3u2/XxvxB+Q7cMXHnKU0CpBiUK1QWqpgiBv28YDo1zOIJE3FCF8DI2vrp6vuwjGt5h0JGXDSvmSf4D4maVjJdw==} requiresBuild: true + dev: false /@rushstack/eslint-patch/1.2.0: resolution: {integrity: sha512-sXo/qW2/pAcmT43VoRKOJbDOfV3cYpq3szSVfIThQXNt+E4DfKj361vaAt3c88U5tPUxzEswam7GW48PJqtKAg==} @@ -5014,6 +5013,7 @@ packages: requiresBuild: true dependencies: '@prisma/engines': 4.6.1 + dev: false /process-warning/2.0.0: resolution: {integrity: sha512-+MmoAXoUX+VTHAlwns0h+kFUWFs/3FZy+ZuchkgjyOu3oioLAo2LB5aCfKPh2+P9O18i3m43tUEv3YqttSy0Ww==}