From 439ecf4a7f71ce1706df283e1b471139107c7944 Mon Sep 17 00:00:00 2001 From: SSHari Date: Wed, 19 Jul 2023 18:19:41 -0400 Subject: [PATCH] =?UTF-8?q?chore:=20=F0=9F=A4=96=20improve=20migrations=20?= =?UTF-8?q?for=20docker=20container=20startup?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/webapp/package.json | 5 +++-- docker/Dockerfile | 5 +---- docker/scripts/entrypoint.sh | 9 +++++++-- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/apps/webapp/package.json b/apps/webapp/package.json index 809f5f588..c323780d4 100644 --- a/apps/webapp/package.json +++ b/apps/webapp/package.json @@ -4,7 +4,8 @@ "version": "1.0.0", "sideEffects": false, "scripts": { - "build": "run-s build:*", + "build": "run-s build:**", + "build:db:seed": "esbuild --platform=node --bundle --minify --format=cjs ./prisma/seed.ts --outdir=prisma", "build:remix": "remix build", "build:server": "esbuild --platform=node --format=cjs ./server.ts --outdir=build", "dev": "cross-env PORT=3030 remix dev", @@ -12,7 +13,7 @@ "lint": "eslint --cache --cache-location ./node_modules/.cache/eslint .", "start": "cross-env NODE_ENV=production node --max-old-space-size=8192 ./build/server.js", "typecheck": "tsc --noEmit", - "db:seed": "ts-node prisma/seed.ts", + "db:seed": "node prisma/seed.js", "generate:sourcemaps": "remix build --sourcemap", "clean:sourcemaps": "run-s clean:sourcemaps:*", "clean:sourcemaps:public": "rimraf ./build/**/*.map", diff --git a/docker/Dockerfile b/docker/Dockerfile index e1d20273f..4b5390d7f 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -60,13 +60,10 @@ COPY --from=production-deps --chown=node:node /triggerdotdev . COPY --from=builder --chown=node:node /triggerdotdev/apps/webapp/build/server.js ./apps/webapp/build/server.js COPY --from=builder --chown=node:node /triggerdotdev/apps/webapp/build ./apps/webapp/build COPY --from=builder --chown=node:node /triggerdotdev/apps/webapp/public ./apps/webapp/public +COPY --from=builder --chown=node:node /triggerdotdev/apps/webapp/prisma/seed.js ./apps/webapp/prisma/seed.js COPY --from=builder --chown=node:node /triggerdotdev/scripts ./scripts EXPOSE 3000 -# This is needed to run migrations in the entrypoint.sh script (TODO: figure out a better way to do this) -RUN npm install -g prisma@4.16.0 -RUN npm install -g ts-node@10.9.1 - USER node CMD ["./scripts/entrypoint.sh"] diff --git a/docker/scripts/entrypoint.sh b/docker/scripts/entrypoint.sh index 23821fcfe..217728253 100755 --- a/docker/scripts/entrypoint.sh +++ b/docker/scripts/entrypoint.sh @@ -5,8 +5,13 @@ if [ -n "$DATABASE_HOST" ]; then scripts/wait-for-it.sh ${DATABASE_HOST} -- echo "database is up" fi -npx --no-install prisma migrate deploy --schema /triggerdotdev/packages/database/prisma/schema.prisma -npx --no-install ts-node --transpile-only /triggerdotdev/apps/webapp/prisma/seed.ts +# Run migrations +pnpm --filter @trigger.dev/database db:migrate:deploy + +# Copy over required prisma files and invoke bundled seed file +cp packages/database/prisma/schema.prisma apps/webapp/prisma/ +cp node_modules/@prisma/engines/libquery_engine-linux-arm64-openssl-1.1.x.so.node apps/webapp/prisma/ +pnpm --filter webapp db:seed cd /triggerdotdev/apps/webapp exec dumb-init pnpm run start