Skip to content

Docker Build Fails: Manual Installation of libvips >= 8.11.3 Necessary for glibc 2.28 #1281

@ZODIAC3K

Description

@ZODIAC3K

Issue regarding the website

  • I've checked that this isn't a duplicate issue.

After forking the swag-for-dev repo I ran these docker commands to build and start the dev docker container.

  docker build --target base -t devswag-dev . 
  && docker run -d -p 8000:8000 --name devswag-dev-container devswag-dev 
  && docker attach devswag-dev-container 

Text Log --

docker build --target base -t devswag-dev . && docker run -d -p 8000:8000 --name devswag-dev-container devswag-dev && docker attach devswag-dev-container                        
[+] Building 90.6s (13/13) FINISHED                                                          docker:desktop-linux
 => [internal] load build definition from Dockerfile                                                         0.0s
 => => transferring dockerfile: 1.20kB                                                                       0.0s
 => [internal] load metadata for docker.io/library/debian:buster                                             2.2s
 => [auth] library/debian:pull token for registry-1.docker.io                                                0.0s
 => [internal] load .dockerignore                                                                            0.0s
 => => transferring context: 221B                                                                            0.0s
 => [base 1/8] FROM docker.io/library/debian:buster@sha256:58ce6f1271ae1c8a2006ff7d3e54e9874d839f573d8009c2  0.0s
 => [internal] load build context                                                                            0.0s
 => => transferring context: 208B                                                                            0.0s
 => CACHED [base 2/8] RUN apt-get update  && apt-get upgrade -y  && apt-get install -y --no-install-recomme  0.0s
 => CACHED [base 3/8] WORKDIR /devswag                                                                       0.0s
 => CACHED [base 4/8] RUN wget -O- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash    0.0s
 => CACHED [base 5/8] COPY .nvmrc ./                                                                         0.0s
 => CACHED [base 6/8] RUN nvm install && nvm use                                                             0.0s
 => CACHED [base 7/8] COPY package.json package-lock.json ./                                                 0.0s
 => ERROR [base 8/8] RUN set -x  && npm ci  && npm cache clean --force                                      88.4s
------                                                                                                            
 > [base 8/8] RUN set -x        && npm ci       && npm cache clean --force:                                       
0.223 + npm ci                                                                                                    
88.17                                                                                                             
88.17 > sharp@0.29.1 install /devswag/node_modules/sharp                                                          
88.17 > (node install/libvips && node install/dll-copy && prebuild-install) || (node install/can-compile && node-gyp rebuild && node install/dll-copy)
88.17 
88.22 sharp: Installation error: Use with glibc 2.28 requires manual installation of libvips >= 8.11.3
88.22 sharp: Please see https://sharp.pixelplumbing.com/install for required dependencies
88.26 npm ERR! code ELIFECYCLE
88.26 npm ERR! errno 1
88.26 npm ERR! sharp@0.29.1 install: `(node install/libvips && node install/dll-copy && prebuild-install) || (node install/can-compile && node-gyp rebuild && node install/dll-copy)`
88.26 npm ERR! Exit status 1
88.26 npm ERR! 
88.26 npm ERR! Failed at the sharp@0.29.1 install script.
88.26 npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
88.28 
88.28 npm ERR! A complete log of this run can be found in:
88.28 npm ERR!     /root/.npm/_logs/2024-10-12T11_06_57_177Z-debug.log
------
Dockerfile:21
--------------------
  20 |     COPY package.json package-lock.json ./
  21 | >>> RUN set -x \
  22 | >>>      # Install npm dependencies
  23 | >>>      && npm ci \
  24 | >>>      # Cleanup
  25 | >>>      && npm cache clean --force
  26 |     
--------------------
ERROR: failed to solve: process "/bin/bash --login -c set -x \t&& npm ci \t&& npm cache clean --force" did not complete successfully: exit code: 1

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

From what I see above, glibc 2.28 requires the manual installation of libvips.
I tried adding the code snippet below to the Dockerfile to manually install libvips during the build.

# Download and install libvips binaries from Sharp's prebuilt releases
RUN wget --no-check-certificate -O /tmp/libvips.tar.gz https://github.com/lovell/sharp-libvips/releases/download/v8.11.3/libvips-8.11.3-linux-x64.tar.gz \
    && echo "Download completed." \
    && ls -l /tmp/libvips.tar.gz \
    && tar -tzf /tmp/libvips.tar.gz \ 
    && tar -xvzf /tmp/libvips.tar.gz --strip-components=2 -C /usr/local \
    && rm /tmp/libvips.tar.gz

Text Log --

11.31 include/webp/demux.h
11.31 include/webp/mux.h
11.31 include/webp/types.h
11.31 include/webp/encode.h
11.31 include/gio-unix-2.0/gio/
11.31 include/gio-unix-2.0/gio/gunixsocketaddress.h
11.31 include/gio-unix-2.0/gio/gunixconnection.h
11.31 include/gio-unix-2.0/gio/gunixcredentialsmessage.h
11.31 include/gio-unix-2.0/gio/gfiledescriptorbased.h
11.31 include/gio-unix-2.0/gio/gunixmounts.h
11.31 include/gio-unix-2.0/gio/gunixoutputstream.h
11.31 include/gio-unix-2.0/gio/gunixinputstream.h
11.31 include/gio-unix-2.0/gio/gunixfdlist.h
11.31 include/gio-unix-2.0/gio/gunixfdmessage.h
11.31 include/gio-unix-2.0/gio/gdesktopappinfo.h
11.41 lib/glib-2.0/include/
11.41 lib/glib-2.0/include/glibconfig.h
11.41 tar: Exiting with failure status due to previous errors
------
Dockerfile:12
--------------------
  11 |     # Download and install libvips binaries from Sharp's prebuilt releases
  12 | >>> RUN wget --no-check-certificate -O /tmp/libvips.tar.gz https://github.com/lovell/sharp-libvips/releases/download/v8.11.3/libvips-8.11.3-linux-x64.tar.gz \
  13 | >>>     && echo "Download completed." \
  14 | >>>     && ls -l /tmp/libvips.tar.gz \
  15 | >>>     && tar -tzf /tmp/libvips.tar.gz \ 
  16 | >>>     && tar -xvzf /tmp/libvips.tar.gz --strip-components=2 -C /usr/local \
  17 | >>>     && rm /tmp/libvips.tar.gz
  18 |     
--------------------
ERROR: failed to solve: process "/bin/sh -c wget --no-check-certificate -O /tmp/libvips.tar.gz https://github.com/lovell/sharp-libvips/releases/download/v8.11.3/libvips-8.11.3-linux-x64.tar.gz     && echo \"Download completed.\"     && ls -l /tmp/libvips.tar.gz     && tar -tzf /tmp/libvips.tar.gz     && tar -xvzf /tmp/libvips.tar.gz --strip-components=2 -C /usr/local     && rm /tmp/libvips.tar.gz" did not complete successfully: exit code: 2

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

Solution

My proposed solution is to use "debian:bullseye" and directly install "libvips-dev". This approach simplifies the installation process and minimizes potential issues related to downloading binaries.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions