Skip to content

Dockerfile-gpu (ubuntu22.04, glibc 2.35) will fail to load uWebSockets.js #565

Description

@kriszyp

Context

Follow-up from #564 (which bumps the main Dockerfile to node:24-trixie so uWebSockets.js's prebuilt binaries — which require GLIBC_2.38 — can load).

Dockerfile-gpu has the same latent problem, one release worse:

FROM nvidia/cuda:13.3.0-cudnn-runtime-ubuntu22.04 AS run

Ubuntu 22.04 ships glibc 2.35. uWebSockets.js v20.68.0 (pinned in harper#1096) links its Linux prebuilts against GLIBC_2.38, so any image built from Dockerfile-gpu will throw the same runtime error the main image did before #564:

/lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.38' not found
(required by .../node_modules/uWebSockets.js/uws_linux_x64_137.node)

This is currently latent because HARPER_UWS_UDS is opt-in and not yet exercised, but it will surface the moment the uWS path is enabled on a GPU-image deployment.

Fix

Bump the CUDA runtime base to an Ubuntu release providing glibc ≥ 2.38, subject to what NVIDIA publishes for CUDA 13.3:

  • nvidia/cuda:13.3.0-cudnn-runtime-ubuntu24.04 (glibc 2.39) — likely available, minimal jump; or
  • ...-ubuntu26.04 (glibc 2.41) if NVIDIA ships it for CUDA 13.3, to match the GPU hosts which already run Ubuntu 26.04 LTS.

Verify the chosen nvidia/cuda:13.3.0-cudnn-runtime-ubuntuXX.04 tag exists before committing.

Verification

Build the GPU image and confirm inside it:

node -e 'require("uWebSockets.js"); console.log("uWS loads OK")'

References

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions