[GH-ISSUE #202] Docker Container cannot be started in offline environment #102

Closed
opened 2026-02-17 17:06:08 -05:00 by yindo · 3 comments
Owner

Originally created by @useless-bit on GitHub (Aug 22, 2025).
Original GitHub issue: https://github.com/Drop-OSS/drop/issues/202

When I start the latest drop docker container with the example from the getting started page, it tries to connect and download a file: https://binaries.prisma.sh/all_commits/f40f79ec31188888a2e33acda0ecc8fd10a853a9/linux-musl-openssl-3.0.x/libquery_engine.so.node.gz.sha256

docker compose logs drop:

drop-1  | [Drop] performing migrations...
drop-1  | Error: request to https://binaries.prisma.sh/all_commits/f40f79ec31188888a2e33acda0ecc8fd10a853a9/linux-musl-openssl-3.0.x/libquery_engine.so.node.gz.sha256 failed, reason: 
drop-1  | Listening on http://[::]:3000
drop-1  | [08:02:06.108] INFO (53): AuthManager initialized
drop-1  | [08:02:06.128] WARN (53): skipping metadata provider setup: Error: Missing config item GIANT_BOMB_API_KEY for GiantBomb
drop-1  | [08:02:06.128] INFO (53): enabled metadata provider: PCGamingWiki
drop-1  | [08:02:06.128] WARN (53): skipping metadata provider setup: Error: Missing config item IGDB_CLIENT_ID for IGDB
drop-1  | [08:02:06.141] WARN (53): Missing all necessary OIDC configuration: 
drop-1  |   OIDC_AUTHORIZATION: undefined
drop-1  |   OIDC_TOKEN: undefined
drop-1  |   OIDC_USERINFO: undefined
drop-1  |   OIDC_SCOPES: undefined
drop-1  |     err: {
drop-1  |       "type": "Error",
drop-1  |       "message": "Missing all necessary OIDC configuration: \n  OIDC_AUTHORIZATION: undefined\n  OIDC_TOKEN: undefined\n  OIDC_USERINFO: undefined\n  OIDC_SCOPES: undefined",
drop-1  |       "stack":
drop-1  |           Error: Missing all necessary OIDC configuration: 
drop-1  |             OIDC_AUTHORIZATION: undefined
drop-1  |             OIDC_TOKEN: undefined
drop-1  |             OIDC_USERINFO: undefined
drop-1  |             OIDC_SCOPES: undefined
drop-1  |               at create (file:///app/app/server/chunks/nitro/nitro.mjs:1:358212)
drop-1  |               at Object.init (file:///app/app/server/chunks/nitro/nitro.mjs:1:361773)
drop-1  |               at _CckPx5UFAX5EWPMs5YqR2BjUXhth2BdAE45KGRCfqw (file:///app/app/server/chunks/nitro/nitro.mjs:1:362148)
drop-1  |               at file:///app/app/server/chunks/nitro/nitro.mjs:1:1228091
drop-1  |               at file:///app/app/server/chunks/nitro/nitro.mjs:1:1228150
drop-1  |               at ModuleJob.run (node:internal/modules/esm/module_job:343:25)
drop-1  |               at async onImport.tracePromise.__proto__ (node:internal/modules/esm/loader:647:26)
drop-1  |               at async asyncRunEntryPointWithESMLoader (node:internal/modules/run_main:117:5)
drop-1  |     }
drop-1  | [08:02:06.144] INFO (53): enabled auth: Simple
drop-1  | [unhandledRejection] PrismaClientKnownRequestError: 
drop-1  | Invalid `prisma.aPIToken.deleteMany()` invocation:
drop-1  | 
drop-1  | 
drop-1  | The table `public.APIToken` does not exist in the current database.
drop-1  |     at Jn.handleRequestError (file:///app/app/server/node_modules/@prisma/client/runtime/library.mjs:128:7460)
drop-1  |     at Jn.handleAndLogRequestError (file:///app/app/server/node_modules/@prisma/client/runtime/library.mjs:128:6785)
drop-1  |     at Jn.request (file:///app/app/server/node_modules/@prisma/client/runtime/library.mjs:128:6492)
drop-1  |     at async l (file:///app/app/server/node_modules/@prisma/client/runtime/library.mjs:137:9767)
drop-1  |     at async _iYOJBRGaBbZk4_sFe4ADFWAC73ompSwLUN6sKai0cXc (file:///app/app/server/chunks/nitro/nitro.mjs:1:307080) {
drop-1  |   code: 'P2021',
drop-1  |   meta: { modelName: 'APIToken', table: 'public.APIToken' },
drop-1  |   clientVersion: '6.12.0'
drop-1  | }
drop-1  | [unhandledRejection] PrismaClientKnownRequestError: 
drop-1  | Invalid `prisma.applicationSettings.count()` invocation:
drop-1  | 
drop-1  | 
drop-1  | The table `public.ApplicationSettings` does not exist in the current database.
drop-1  |     at Jn.handleRequestError (file:///app/app/server/node_modules/@prisma/client/runtime/library.mjs:128:7460)
drop-1  |     at Jn.handleAndLogRequestError (file:///app/app/server/node_modules/@prisma/client/runtime/library.mjs:128:6785)
drop-1  |     at Jn.request (file:///app/app/server/node_modules/@prisma/client/runtime/library.mjs:128:6492)
drop-1  |     at async l (file:///app/app/server/node_modules/@prisma/client/runtime/library.mjs:137:9767)
drop-1  |     at async Object.init (file:///app/app/server/chunks/nitro/nitro.mjs:1:307881)
drop-1  |     at async Object.get (file:///app/app/server/chunks/nitro/nitro.mjs:1:308579)
drop-1  |     at async _y6uhuik1Yw3Y9hqD2DaoEUHxb4jbWYHgoyq_zI9o8Og (file:///app/app/server/chunks/nitro/nitro.mjs:1:356797) {
drop-1  |   code: 'P2021',
drop-1  |   meta: {
drop-1  |     modelName: 'ApplicationSettings',
drop-1  |     table: 'public.ApplicationSettings'
drop-1  |   },
drop-1  |   clientVersion: '6.12.0'
drop-1  | }
drop-1  | [unhandledRejection] PrismaClientKnownRequestError: 
drop-1  | Invalid `prisma.library.findMany()` invocation:
drop-1  | 
drop-1  | 
drop-1  | The table `public.Library` does not exist in the current database.
drop-1  |     at Jn.handleRequestError (file:///app/app/server/node_modules/@prisma/client/runtime/library.mjs:128:7460)
drop-1  |     at Jn.handleAndLogRequestError (file:///app/app/server/node_modules/@prisma/client/runtime/library.mjs:128:6785)
drop-1  |     at Jn.request (file:///app/app/server/node_modules/@prisma/client/runtime/library.mjs:128:6492)
drop-1  |     at async l (file:///app/app/server/node_modules/@prisma/client/runtime/library.mjs:137:9767)
drop-1  |     at async _WKO51sJHbIinbd22B34Q5RCVDbXBhnpNo492KpU9w (file:///app/app/server/chunks/nitro/nitro.mjs:1:365644) {
drop-1  |   code: 'P2021',
drop-1  |   meta: { modelName: 'Library', table: 'public.Library' },
drop-1  |   clientVersion: '6.12.0'
drop-1  | }
drop-1  | [unhandledRejection] PrismaClientKnownRequestError: 
drop-1  | Invalid `prisma.task.findFirst()` invocation:
drop-1  | 
drop-1  | 
drop-1  | The table `public.Task` does not exist in the current database.
drop-1  |     at Jn.handleRequestError (file:///app/app/server/node_modules/@prisma/client/runtime/library.mjs:128:7460)
drop-1  |     at Jn.handleAndLogRequestError (file:///app/app/server/node_modules/@prisma/client/runtime/library.mjs:128:6785)
drop-1  |     at Jn.request (file:///app/app/server/node_modules/@prisma/client/runtime/library.mjs:128:6492)
drop-1  |     at async l (file:///app/app/server/node_modules/@prisma/client/runtime/library.mjs:137:9767)
drop-1  |     at async Object.triggerDailyTasks (file:///app/app/server/chunks/nitro/nitro.mjs:1:332520)
drop-1  |     at async Object.run (file:///app/app/server/chunks/tasks/dailyTasks.mjs:1:994)
drop-1  |     at async runTask (file:///app/app/server/chunks/nitro/nitro.mjs:1:164942)
drop-1  |     at async _l0R1KtTbKA7go17aqvvrZsaQeeXSf0qcaaHpDNV5o (file:///app/app/server/chunks/nitro/nitro.mjs:1:368301) {
drop-1  |   code: 'P2021',
drop-1  |   meta: { modelName: 'Task', table: 'public.Task' },
drop-1  |   clientVersion: '6.12.0'
drop-1  | }
drop-1  | [unhandledRejection] PrismaClientKnownRequestError: 
drop-1  | Invalid `prisma.user.upsert()` invocation:
drop-1  | 
drop-1  | 
drop-1  | The table `public.User` does not exist in the current database.
drop-1  |     at Jn.handleRequestError (file:///app/app/server/node_modules/@prisma/client/runtime/library.mjs:128:7460)
drop-1  |     at Jn.handleAndLogRequestError (file:///app/app/server/node_modules/@prisma/client/runtime/library.mjs:128:6785)
drop-1  |     at Jn.request (file:///app/app/server/node_modules/@prisma/client/runtime/library.mjs:128:6492)
drop-1  |     at async l (file:///app/app/server/node_modules/@prisma/client/runtime/library.mjs:137:9767)
drop-1  |     at async _7fxABmwoLf5Q0RwXFcwCLzdO3ZIdBNWgFrXYZO4Ic (file:///app/app/server/chunks/nitro/nitro.mjs:1:305656) {
drop-1  |   code: 'P2021',
drop-1  |   meta: { modelName: 'User', table: 'public.User' },
drop-1  |   clientVersion: '6.12.0'
drop-1  | }
drop-1  | [unhandledRejection] PrismaClientKnownRequestError: 
drop-1  | Invalid `prisma.certificate.findUnique()` invocation:
drop-1  | 
drop-1  | 
drop-1  | The table `public.Certificate` does not exist in the current database.
drop-1  |     at Jn.handleRequestError (file:///app/app/server/node_modules/@prisma/client/runtime/library.mjs:128:7460)
drop-1  |     at Jn.handleAndLogRequestError (file:///app/app/server/node_modules/@prisma/client/runtime/library.mjs:128:6785)
drop-1  |     at Jn.request (file:///app/app/server/node_modules/@prisma/client/runtime/library.mjs:128:6492)
drop-1  |     at async l (file:///app/app/server/node_modules/@prisma/client/runtime/library.mjs:137:9767)
drop-1  |     at async Object.fetch (file:///app/app/server/chunks/nitro/nitro.mjs:1:367843)
drop-1  |     at async CertificateAuthority.new (file:///app/app/server/chunks/nitro/nitro.mjs:1:366618)
drop-1  |     at async _nPsv673cKO9hKycARFhxLH_nXgmVXGsAst2lJ9n1zuY (file:///app/app/server/chunks/nitro/nitro.mjs:1:367629) {
drop-1  |   code: 'P2021',
drop-1  |   meta: { modelName: 'Certificate', table: 'public.Certificate' },
drop-1  |   clientVersion: '6.12.0'
drop-1  | }

Would it be possible to allow Drop to work in an offline environment?

Originally created by @useless-bit on GitHub (Aug 22, 2025). Original GitHub issue: https://github.com/Drop-OSS/drop/issues/202 When I start the latest drop docker container with the example from the getting started page, it tries to connect and download a file: https://binaries.prisma.sh/all_commits/f40f79ec31188888a2e33acda0ecc8fd10a853a9/linux-musl-openssl-3.0.x/libquery_engine.so.node.gz.sha256 docker compose logs drop: ```shell drop-1 | [Drop] performing migrations... drop-1 | Error: request to https://binaries.prisma.sh/all_commits/f40f79ec31188888a2e33acda0ecc8fd10a853a9/linux-musl-openssl-3.0.x/libquery_engine.so.node.gz.sha256 failed, reason: drop-1 | Listening on http://[::]:3000 drop-1 | [08:02:06.108] INFO (53): AuthManager initialized drop-1 | [08:02:06.128] WARN (53): skipping metadata provider setup: Error: Missing config item GIANT_BOMB_API_KEY for GiantBomb drop-1 | [08:02:06.128] INFO (53): enabled metadata provider: PCGamingWiki drop-1 | [08:02:06.128] WARN (53): skipping metadata provider setup: Error: Missing config item IGDB_CLIENT_ID for IGDB drop-1 | [08:02:06.141] WARN (53): Missing all necessary OIDC configuration: drop-1 | OIDC_AUTHORIZATION: undefined drop-1 | OIDC_TOKEN: undefined drop-1 | OIDC_USERINFO: undefined drop-1 | OIDC_SCOPES: undefined drop-1 | err: { drop-1 | "type": "Error", drop-1 | "message": "Missing all necessary OIDC configuration: \n OIDC_AUTHORIZATION: undefined\n OIDC_TOKEN: undefined\n OIDC_USERINFO: undefined\n OIDC_SCOPES: undefined", drop-1 | "stack": drop-1 | Error: Missing all necessary OIDC configuration: drop-1 | OIDC_AUTHORIZATION: undefined drop-1 | OIDC_TOKEN: undefined drop-1 | OIDC_USERINFO: undefined drop-1 | OIDC_SCOPES: undefined drop-1 | at create (file:///app/app/server/chunks/nitro/nitro.mjs:1:358212) drop-1 | at Object.init (file:///app/app/server/chunks/nitro/nitro.mjs:1:361773) drop-1 | at _CckPx5UFAX5EWPMs5YqR2BjUXhth2BdAE45KGRCfqw (file:///app/app/server/chunks/nitro/nitro.mjs:1:362148) drop-1 | at file:///app/app/server/chunks/nitro/nitro.mjs:1:1228091 drop-1 | at file:///app/app/server/chunks/nitro/nitro.mjs:1:1228150 drop-1 | at ModuleJob.run (node:internal/modules/esm/module_job:343:25) drop-1 | at async onImport.tracePromise.__proto__ (node:internal/modules/esm/loader:647:26) drop-1 | at async asyncRunEntryPointWithESMLoader (node:internal/modules/run_main:117:5) drop-1 | } drop-1 | [08:02:06.144] INFO (53): enabled auth: Simple drop-1 | [unhandledRejection] PrismaClientKnownRequestError: drop-1 | Invalid `prisma.aPIToken.deleteMany()` invocation: drop-1 | drop-1 | drop-1 | The table `public.APIToken` does not exist in the current database. drop-1 | at Jn.handleRequestError (file:///app/app/server/node_modules/@prisma/client/runtime/library.mjs:128:7460) drop-1 | at Jn.handleAndLogRequestError (file:///app/app/server/node_modules/@prisma/client/runtime/library.mjs:128:6785) drop-1 | at Jn.request (file:///app/app/server/node_modules/@prisma/client/runtime/library.mjs:128:6492) drop-1 | at async l (file:///app/app/server/node_modules/@prisma/client/runtime/library.mjs:137:9767) drop-1 | at async _iYOJBRGaBbZk4_sFe4ADFWAC73ompSwLUN6sKai0cXc (file:///app/app/server/chunks/nitro/nitro.mjs:1:307080) { drop-1 | code: 'P2021', drop-1 | meta: { modelName: 'APIToken', table: 'public.APIToken' }, drop-1 | clientVersion: '6.12.0' drop-1 | } drop-1 | [unhandledRejection] PrismaClientKnownRequestError: drop-1 | Invalid `prisma.applicationSettings.count()` invocation: drop-1 | drop-1 | drop-1 | The table `public.ApplicationSettings` does not exist in the current database. drop-1 | at Jn.handleRequestError (file:///app/app/server/node_modules/@prisma/client/runtime/library.mjs:128:7460) drop-1 | at Jn.handleAndLogRequestError (file:///app/app/server/node_modules/@prisma/client/runtime/library.mjs:128:6785) drop-1 | at Jn.request (file:///app/app/server/node_modules/@prisma/client/runtime/library.mjs:128:6492) drop-1 | at async l (file:///app/app/server/node_modules/@prisma/client/runtime/library.mjs:137:9767) drop-1 | at async Object.init (file:///app/app/server/chunks/nitro/nitro.mjs:1:307881) drop-1 | at async Object.get (file:///app/app/server/chunks/nitro/nitro.mjs:1:308579) drop-1 | at async _y6uhuik1Yw3Y9hqD2DaoEUHxb4jbWYHgoyq_zI9o8Og (file:///app/app/server/chunks/nitro/nitro.mjs:1:356797) { drop-1 | code: 'P2021', drop-1 | meta: { drop-1 | modelName: 'ApplicationSettings', drop-1 | table: 'public.ApplicationSettings' drop-1 | }, drop-1 | clientVersion: '6.12.0' drop-1 | } drop-1 | [unhandledRejection] PrismaClientKnownRequestError: drop-1 | Invalid `prisma.library.findMany()` invocation: drop-1 | drop-1 | drop-1 | The table `public.Library` does not exist in the current database. drop-1 | at Jn.handleRequestError (file:///app/app/server/node_modules/@prisma/client/runtime/library.mjs:128:7460) drop-1 | at Jn.handleAndLogRequestError (file:///app/app/server/node_modules/@prisma/client/runtime/library.mjs:128:6785) drop-1 | at Jn.request (file:///app/app/server/node_modules/@prisma/client/runtime/library.mjs:128:6492) drop-1 | at async l (file:///app/app/server/node_modules/@prisma/client/runtime/library.mjs:137:9767) drop-1 | at async _WKO51sJHbIinbd22B34Q5RCVDbXBhnpNo492KpU9w (file:///app/app/server/chunks/nitro/nitro.mjs:1:365644) { drop-1 | code: 'P2021', drop-1 | meta: { modelName: 'Library', table: 'public.Library' }, drop-1 | clientVersion: '6.12.0' drop-1 | } drop-1 | [unhandledRejection] PrismaClientKnownRequestError: drop-1 | Invalid `prisma.task.findFirst()` invocation: drop-1 | drop-1 | drop-1 | The table `public.Task` does not exist in the current database. drop-1 | at Jn.handleRequestError (file:///app/app/server/node_modules/@prisma/client/runtime/library.mjs:128:7460) drop-1 | at Jn.handleAndLogRequestError (file:///app/app/server/node_modules/@prisma/client/runtime/library.mjs:128:6785) drop-1 | at Jn.request (file:///app/app/server/node_modules/@prisma/client/runtime/library.mjs:128:6492) drop-1 | at async l (file:///app/app/server/node_modules/@prisma/client/runtime/library.mjs:137:9767) drop-1 | at async Object.triggerDailyTasks (file:///app/app/server/chunks/nitro/nitro.mjs:1:332520) drop-1 | at async Object.run (file:///app/app/server/chunks/tasks/dailyTasks.mjs:1:994) drop-1 | at async runTask (file:///app/app/server/chunks/nitro/nitro.mjs:1:164942) drop-1 | at async _l0R1KtTbKA7go17aqvvrZsaQeeXSf0qcaaHpDNV5o (file:///app/app/server/chunks/nitro/nitro.mjs:1:368301) { drop-1 | code: 'P2021', drop-1 | meta: { modelName: 'Task', table: 'public.Task' }, drop-1 | clientVersion: '6.12.0' drop-1 | } drop-1 | [unhandledRejection] PrismaClientKnownRequestError: drop-1 | Invalid `prisma.user.upsert()` invocation: drop-1 | drop-1 | drop-1 | The table `public.User` does not exist in the current database. drop-1 | at Jn.handleRequestError (file:///app/app/server/node_modules/@prisma/client/runtime/library.mjs:128:7460) drop-1 | at Jn.handleAndLogRequestError (file:///app/app/server/node_modules/@prisma/client/runtime/library.mjs:128:6785) drop-1 | at Jn.request (file:///app/app/server/node_modules/@prisma/client/runtime/library.mjs:128:6492) drop-1 | at async l (file:///app/app/server/node_modules/@prisma/client/runtime/library.mjs:137:9767) drop-1 | at async _7fxABmwoLf5Q0RwXFcwCLzdO3ZIdBNWgFrXYZO4Ic (file:///app/app/server/chunks/nitro/nitro.mjs:1:305656) { drop-1 | code: 'P2021', drop-1 | meta: { modelName: 'User', table: 'public.User' }, drop-1 | clientVersion: '6.12.0' drop-1 | } drop-1 | [unhandledRejection] PrismaClientKnownRequestError: drop-1 | Invalid `prisma.certificate.findUnique()` invocation: drop-1 | drop-1 | drop-1 | The table `public.Certificate` does not exist in the current database. drop-1 | at Jn.handleRequestError (file:///app/app/server/node_modules/@prisma/client/runtime/library.mjs:128:7460) drop-1 | at Jn.handleAndLogRequestError (file:///app/app/server/node_modules/@prisma/client/runtime/library.mjs:128:6785) drop-1 | at Jn.request (file:///app/app/server/node_modules/@prisma/client/runtime/library.mjs:128:6492) drop-1 | at async l (file:///app/app/server/node_modules/@prisma/client/runtime/library.mjs:137:9767) drop-1 | at async Object.fetch (file:///app/app/server/chunks/nitro/nitro.mjs:1:367843) drop-1 | at async CertificateAuthority.new (file:///app/app/server/chunks/nitro/nitro.mjs:1:366618) drop-1 | at async _nPsv673cKO9hKycARFhxLH_nXgmVXGsAst2lJ9n1zuY (file:///app/app/server/chunks/nitro/nitro.mjs:1:367629) { drop-1 | code: 'P2021', drop-1 | meta: { modelName: 'Certificate', table: 'public.Certificate' }, drop-1 | clientVersion: '6.12.0' drop-1 | } ``` Would it be possible to allow Drop to work in an offline environment?
yindo closed this issue 2026-02-17 17:06:08 -05:00
Author
Owner

@DecDuck commented on GitHub (Aug 22, 2025):

Yeah absolutely.

Drop does not require an internet connection itself, but, as it hints, the ORM needs to download a binary in order to function.

As far as I see it, you could:

  • allow internet access for container startup, and then disable it once it's running
  • clone the GitHub repo (make sure to get the right tag for the version you're using), and run the migrations manually on your database. I can provide instructions, if need be
  • there's a thread here: https://github.com/prisma/prisma/discussions/14873#discussioncomment-3434643 about downloading and copying the required binaries manually, if you want to give that a try
@DecDuck commented on GitHub (Aug 22, 2025): Yeah absolutely. Drop does not require an internet connection itself, but, as it hints, the ORM needs to download a binary in order to function. As far as I see it, you could: - allow internet access for container startup, and then disable it once it's running - clone the GitHub repo (make sure to get the right tag for the version you're using), and run the migrations manually on your database. I can provide instructions, if need be - there's a thread here: https://github.com/prisma/prisma/discussions/14873#discussioncomment-3434643 about downloading and copying the required binaries manually, if you want to give that a try
Author
Owner

@useless-bit commented on GitHub (Aug 22, 2025):

Thanks for the reply.

I did some testing, and it seems that adding RUN pnpm prisma init before the copy steps in the last stage in the Dockerfile will add the required files for the nodejs-alpine container.

I would create a PR with this change if it would be an acceptable solution.

@useless-bit commented on GitHub (Aug 22, 2025): Thanks for the reply. I did some testing, and it seems that adding `RUN pnpm prisma init` before the copy steps in the last stage in the Dockerfile will add the required files for the nodejs-alpine container. I would create a PR with this change if it would be an acceptable solution.
Author
Owner

@DecDuck commented on GitHub (Aug 22, 2025):

That sounds good

@DecDuck commented on GitHub (Aug 22, 2025): That sounds good
yindo changed title from Docker Container cannot be started in offline environment to [GH-ISSUE #202] Docker Container cannot be started in offline environment 2026-06-05 14:21:26 -04:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Drop-OSS/drop#102