fix(deploy): embed prisma migrate deploy in API startup
- Move prisma to runtime dependencies so it's available in prod image - API runs migrate deploy before starting (handles fresh installs + updates) - Remove separate migrate service from prod compose Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
+1
-1
@@ -33,4 +33,4 @@ COPY --from=builder /app/apps/api/prisma ./apps/api/prisma
|
|||||||
COPY --from=builder /app/packages/shared/src ./packages/shared/src
|
COPY --from=builder /app/packages/shared/src ./packages/shared/src
|
||||||
USER nestjs
|
USER nestjs
|
||||||
EXPOSE 3001
|
EXPOSE 3001
|
||||||
CMD ["node", "apps/api/dist/main.js"]
|
CMD ["sh", "-c", "node_modules/.bin/prisma migrate deploy --schema apps/api/prisma/schema.prisma && node apps/api/dist/main.js"]
|
||||||
|
|||||||
@@ -21,6 +21,7 @@
|
|||||||
"@nestjs/platform-express": "^11.0.0",
|
"@nestjs/platform-express": "^11.0.0",
|
||||||
"@nestjs/schedule": "^6.1.3",
|
"@nestjs/schedule": "^6.1.3",
|
||||||
"@prisma/client": "^6.0.0",
|
"@prisma/client": "^6.0.0",
|
||||||
|
"prisma": "^6.0.0",
|
||||||
"@tessera/shared": "workspace:*",
|
"@tessera/shared": "workspace:*",
|
||||||
"argon2": "^0.44.0",
|
"argon2": "^0.44.0",
|
||||||
"class-transformer": "^0.5.1",
|
"class-transformer": "^0.5.1",
|
||||||
@@ -50,7 +51,6 @@
|
|||||||
"@types/nodemailer": "^8.0.1",
|
"@types/nodemailer": "^8.0.1",
|
||||||
"@types/passport-jwt": "^4.0.1",
|
"@types/passport-jwt": "^4.0.1",
|
||||||
"@types/passport-local": "^1.0.38",
|
"@types/passport-local": "^1.0.38",
|
||||||
"prisma": "^6.0.0",
|
|
||||||
"typescript": "^5.5.0"
|
"typescript": "^5.5.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,16 +1,4 @@
|
|||||||
services:
|
services:
|
||||||
migrate:
|
|
||||||
image: git.vicolab.de/schalli/tessera-ctl/api:latest
|
|
||||||
command: sh -c "cd /app && node_modules/.bin/prisma migrate deploy --schema apps/api/prisma/schema.prisma"
|
|
||||||
environment:
|
|
||||||
DATABASE_URL: ${DATABASE_URL}
|
|
||||||
networks:
|
|
||||||
- data-net
|
|
||||||
depends_on:
|
|
||||||
db:
|
|
||||||
condition: service_healthy
|
|
||||||
restart: "no"
|
|
||||||
|
|
||||||
web:
|
web:
|
||||||
image: git.vicolab.de/schalli/tessera-ctl/web:latest
|
image: git.vicolab.de/schalli/tessera-ctl/web:latest
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
@@ -39,8 +27,6 @@ services:
|
|||||||
depends_on:
|
depends_on:
|
||||||
db:
|
db:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
migrate:
|
|
||||||
condition: service_completed_successfully
|
|
||||||
environment:
|
environment:
|
||||||
DATABASE_URL: ${DATABASE_URL}
|
DATABASE_URL: ${DATABASE_URL}
|
||||||
JWT_SECRET: ${JWT_SECRET}
|
JWT_SECRET: ${JWT_SECRET}
|
||||||
|
|||||||
Generated
+3
-3
@@ -101,6 +101,9 @@ importers:
|
|||||||
pdf-parse:
|
pdf-parse:
|
||||||
specifier: ^2.4.5
|
specifier: ^2.4.5
|
||||||
version: 2.4.5
|
version: 2.4.5
|
||||||
|
prisma:
|
||||||
|
specifier: ^6.0.0
|
||||||
|
version: 6.19.3(typescript@5.9.3)
|
||||||
reflect-metadata:
|
reflect-metadata:
|
||||||
specifier: ^0.2.0
|
specifier: ^0.2.0
|
||||||
version: 0.2.2
|
version: 0.2.2
|
||||||
@@ -135,9 +138,6 @@ importers:
|
|||||||
'@types/passport-local':
|
'@types/passport-local':
|
||||||
specifier: ^1.0.38
|
specifier: ^1.0.38
|
||||||
version: 1.0.38
|
version: 1.0.38
|
||||||
prisma:
|
|
||||||
specifier: ^6.0.0
|
|
||||||
version: 6.19.3(typescript@5.9.3)
|
|
||||||
typescript:
|
typescript:
|
||||||
specifier: ^5.5.0
|
specifier: ^5.5.0
|
||||||
version: 5.9.3
|
version: 5.9.3
|
||||||
|
|||||||
Reference in New Issue
Block a user