Uploaded image for project: 'Red Hat OpenShift Dev Spaces (formerly CodeReady Workspaces) '
  1. Red Hat OpenShift Dev Spaces (formerly CodeReady Workspaces)
  2. CRW-5629

Support running Devspaces-Code in ubi9-based containers

XMLWordPrintable

    • False
    • None
    • False

      Currently it's possible to run Devspaces-Code in a ubi8-based container. The current task is for an ability to run Devspaces-Code in a ubi9-based container.

      There is a pull request in the upstream Che-Code that provides this functionality. But some adaptation is required for the Devspaces-Code.

      The main problem is: Node.js without dynamic dependency on the /lib64/libbrotlicommon.so.1 is required.
      In the upstream Node.js is downloaded from the https://nodejs.org resource. It's good enough for the upstream, but taking in account productization process, a better solution for the devspaces-code should be found.

      More details:
      Currently we use Node.js from the ubi8/nodejs-18 image to build and run VS Code.
      At the moment the process is:

      • we use registry.access.redhat.com/ubi8/nodejs-18 as a base image to build VS Code
      • at starting a workspace we copy the VS Code assembly + Node.js from ubi8/nodejs-18 image to a user's container
      • we run VS Code in the user's container using that Node.js from the ubi8/nodejs-18 image

      It works for ubi8-based user's containers as ubi8-based images contain all dependencies that the copied Node.js requires.

      Now we are going to support running VS Code in ubi9-based containers. There is some incompatibility between ubi8 and ubi9-based images, like:

      • Node.js from ubi8/nodejs-18 relies on the /lib64/libcrypto.so.1.1
      • ubi9-based images contain /lib64/libcrypto.so.3 instead

      So I tried to use Node.js from the https://registry.access.redhat.com/ubi9/nodejs-18 image to run VS Code in a ubi9-based user's container. But it doesn't work.

      The cause of the problem:

      • Node.js from the ubi9/nodejs-18 image relies on the libbrotlicommon.so.1 => /lib64/libbrotlicommon.so.1.
      • At the same time, for example, registry.access.redhat.com/ubi9:9.3 image doesn't have /lib64/libbrotlicommon.so.1.

      So, to solve the problem:

      • Node.js without dynamic dependency on the /lib64/libbrotlicommon.so.1 is required
      • probably the best solution would be to have static Node.js, so without dynamic dependencies. I guess this way we could use such Node.js to run VS Code in any container as static Node.js would bring all required dependencies

            rnikiten Roman Nikitenko
            rnikiten Roman Nikitenko
            Votes:
            0 Vote for this issue
            Watchers:
            5 Start watching this issue

              Created:
              Updated:
              Resolved: