oven-sh / bun

Incredibly fast JavaScript runtime, bundler, test runner, and package manager – all in one
https://bun.sh
Other
73.28k stars 2.69k forks source link

bunx prisma generate | Docker #12905

Open webfryingpan opened 1 month ago

webfryingpan commented 1 month ago

How can we reproduce the crash?

When im trying to prisma generate it throws an error or stucks

How to reproduce: run docker build -t backend .

with following Dockerfile

FROM oven/bun:1-alpine AS base

WORKDIR /usr/src/app

FROM base AS install
RUN mkdir -p /temp/dev
COPY package.json bun.lockb /temp/dev/
RUN cd /temp/dev && bun install

FROM base AS prerelease
COPY --from=install /temp/dev/node_modules node_modules
COPY . .
RUN bunx prisma generate

EXPOSE 3002

ENTRYPOINT [ "node", "test.js" ]

when im trying to use oven/bun:1

generation just stucks with following logs

 => => # Environment variables loaded from .env
 => => # Prisma schema loaded from prisma/schema.prisma```
prisma:generator prismaCLIDir /usr/src/app/node_modules/prisma +12ms
prisma:generator prismaClientDir /usr/src/app/node_modules/@prisma/client +0ms
prisma:generator baseDir /usr/src/app/prisma +0ms
prisma:generator typescriptPath /usr/src/app/node_modules/typescript +3ms
prisma:GeneratorProcess prisma:client:generator requiredEngine: libqueryEngine +64ms +138ms
prisma:mergeSchemas Using mergeSchemas Wasm +1ms
prisma:loadEnv project root found at /usr/src/app/node_modules/@prisma/client/package.json +21ms
prisma:getSchema prismaConfig {
"packagePath": "/usr/src/app/package.json"
} +0ms
prisma:getGenerators neededVersions {
"393aa359c9ad4a4bb28630fb5613f9c281cde053": {
"engines": [
"libqueryEngine"
],
"binaryTargets": [
{
"fromEnvVar": null,
"value": "debian-openssl-1.1.x",
"native": true
}
]
}
} +1ms

source code: https://github.com/webfryingpan/board-manager/tree/feature

Relevant log output

=> [internal] load build definition from Dockerfile                                                                                                0.0s
 => => transferring dockerfile: 595B                                                                                                                0.0s 
 => [internal] load metadata for docker.io/oven/bun:1-alpine                                                                                        0.7s 
 => [internal] load .dockerignore                                                                                                                   0.1s
 => => transferring context: 198B                                                                                                                   0.0s 
 => [internal] load build context                                                                                                                   0.0s 
 => => transferring context: 846B                                                                                                                   0.0s 
 => [base 1/2] FROM docker.io/oven/bun:1-alpine@sha256:1c5c688753290535a4e58c09f4291b97be65020627b662caf304a67f43253bad                             0.0s 
 => CACHED [base 2/2] WORKDIR /usr/src/app                                                                                                          0.0s
 => CACHED [install 1/3] RUN mkdir -p /temp/dev                                                                                                     0.0s
 => CACHED [install 2/3] COPY package.json bun.lockb /temp/dev/                                                                                     0.0s
 => CACHED [install 3/3] RUN cd /temp/dev && bun install                                                                                            0.0s
 => CACHED [prerelease 1/3] COPY --from=install /temp/dev/node_modules node_modules                                                                 0.0s
 => CACHED [prerelease 2/3] COPY . .                                                                                                                0.0s
 => ERROR [prerelease 3/3] RUN bunx prisma generate                                                                                                 1.3s
------
 > [prerelease 3/3] RUN bunx prisma generate:
1.239 ============================================================
1.239 Bun v1.1.21 (70ca2b76) Linux x64 (baseline)
1.239 WSL Kernel v5.15.153 | glibc v2.34
1.239 CPU: sse42 popcnt avx avx2
1.239 Args: "node" "/usr/src/app/node_modules/.bin/prisma" "generate"
1.239 Features: jsc Bun.stdin(2) dotenv spawn tsconfig
1.239 Builtins: "bun:main" "node:assert" "node:buffer" "node:child_process" "node:constants" "node:crypto" "node:events" "node:fs" "node:fs/promises" "node:http" "node:https" "node:module" "node:net" "node:os" "node:path" "node:querystring" "node:readline" "node:stream" "node:string_decoder" "node:timers/promises" "node:tls" "node:tty" "node:url" "node:util" "node:util/types" "node:zlib" "node:worker_threads"
1.239 Elapsed: 824ms | User: 996ms | Sys: 589ms
1.239 RSS: 0.89GB | Peak: 0.32GB | Commit: 0.89GB | Faults: 0
1.239
1.239 panic(main thread): Segmentation fault at address 0x4A0D0
1.239 oh no: Bun has crashed. This indicates a bug in Bun, not your code.
1.239
1.239 To send a redacted crash report to Bun's team,
1.239 please file a GitHub issue using the link below:
1.239
1.239  https://bun.report/1.1.21/Bn170ca2b7AqoggkCuos3iEA2AgtwS
1.239
------
Dockerfile:12
--------------------
  10 |     COPY --from=install /temp/dev/node_modules node_modules
  11 |     COPY . .
  12 | >>> RUN bunx prisma generate
  13 |     # RUN bun run build
  14 |
--------------------
ERROR: failed to solve: process "/bin/sh -c bunx prisma generate" did not complete successfully: exit code: 139

View build details: docker-desktop://dashboard/build/desktop-linux/desktop-linux/vegrbzd49pzh7r0vfrc7wwth4

Stack Trace (bun.report)

Bun v1.1.21 (70ca2b7) on linux x86_64_baseline [AutoCommand]

Segmentation fault at address 0x0004A0D0

EfogDev commented 1 month ago

You can't use oven/bun with prisma for now (as I understand). imbios/bun-node works. Here's our Dockerfile:

ARG BASE=imbios/bun-node:latest-current-slim
FROM ${BASE} AS install
WORKDIR /tmp/install

RUN mkdir packages
COPY package.json bun.lockb ./
COPY bunfig.prod.toml bunfig.toml
COPY packages/common packages/common
COPY packages/backend packages/backend

RUN bunx prisma generate --schema packages/common/src/db/schema.prisma

FROM ${BASE}
WORKDIR /app

COPY --from=install /tmp/install .
EXPOSE $PORT
CMD ["sh", "-c", "bun run db:deploy && bun run -b --filter backend start"]
savareyhano commented 4 days ago

You can't use oven/bun with prisma for now (as I understand). imbios/bun-node works. Here's our Dockerfile:

ARG BASE=imbios/bun-node:latest-current-slim
FROM ${BASE} AS install
WORKDIR /tmp/install

RUN mkdir packages
COPY package.json bun.lockb ./
COPY bunfig.prod.toml bunfig.toml
COPY packages/common packages/common
COPY packages/backend packages/backend

RUN bunx prisma generate --schema packages/common/src/db/schema.prisma

FROM ${BASE}
WORKDIR /app

COPY --from=install /tmp/install .
EXPOSE $PORT
CMD ["sh", "-c", "bun run db:deploy && bun run -b --filter backend start"]

Hello, just want to say thank you. This took me a very long time to solve before i know it was the image itself that was the problem.