Was I supposed to clone the GitHub repository before trying to build the image?

I ask because I’ve just seen these errors

 => ERROR [2/4] COPY patches/ /tmp/patches/                                0.0s
 => CACHED [3/4] RUN   echo "**** install build packages ****" &&   apk a  0.0s
 => ERROR [4/4] COPY root/ /                                               0.0s
------
 > [2/4] COPY patches/ /tmp/patches/:
------
------
 > [4/4] COPY root/ /:
------
Dockerfile:63
--------------------
  61 |     
  62 |     # add local files
  63 | >>> COPY root/ /
  64 |     
  65 |     # ports and volumes
--------------------
ERROR: failed to solve: failed to compute cache key: failed to calculate checksum of ref 2ad57b92-028a-429f-a2de-be0e9a7f57af::cz3t2511b10hmumww1m73cse6: "/root": not found

And being as n00b as I am, I’m instantly trying to attribute the blame to me not doing something.

  • sabreW4K3@lazysoci.alOP
    link
    fedilink
    English
    arrow-up
    2
    ·
    1 month ago

    I took the dockerfile from https://github.com/linuxserver/docker-headphones/blob/master/Dockerfile

    Updated it to look like

    # syntax=docker/dockerfile:1
    
    FROM ghcr.io/linuxserver/baseimage-alpine:3.20
    
    # set version label
    ARG BUILD_DATE
    ARG VERSION
    ARG HEADPHONES_COMMIT
    LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DATE}"
    LABEL maintainer="aptalca"
    # hard set UTC in case the user does not define it
    ENV TZ="Etc/UTC"
    
    # copy patches folder
    COPY patches/ /tmp/patches/
    
    RUN \
      echo "**** install build packages ****" && \
      apk add --no-cache --virtual=build-dependencies \
        build-base && \
      echo "**** install runtime packages ****" && \
      apk add --no-cache \
        ffmpeg \
        flac \
        mc \
        python3 && \
      echo "**** compile shntool *** *" && \
      mkdir -p \
        /tmp/shntool && \
      tar xf /tmp/patches/shntool-3.0.10.tar.gz -C \
        /tmp/shntool --strip-components=1 && \
      cp /tmp/patches/config.* /tmp/shntool && \
      cd /tmp/shntool && \
      ./configure \
        --infodir=/usr/share/info \
        --localstatedir=/var \
        --mandir=/usr/share/man \
        --prefix=/usr \
        --sysconfdir=/etc && \
      make && \
      make install && \
      echo "**** install headphones ****" && \
      mkdir -p /app/headphones && \
      if [ -z ${HEADPHONES_COMMIT+x} ] ; then \
        HEADPHONES_COMMIT=$(curl -sX GET "https://api.github.com/repos/rembo10/headphones/commits/master" \
        | jq -r .sha); \
      fi && \
      curl -o \
        /tmp/headphones.tar.gz -sL \
        "https://github.com/rembo10/headphones/archive/${HEADPHONES_COMMIT}.tar.gz" && \
      tar xf \
        /tmp/headphones.tar.gz -C \
        /app/headphones --strip-components=1 && \
      echo ${HEADPHONES_COMMIT} > /app/headphones/version.txt && \
      echo "**** cleanup ****" && \
      apk del --purge \
        build-dependencies && \
      rm -rf \
        /tmp/* \
        /usr/lib/*.la
    
    # add local files
    COPY root/ /
    
    # ports and volumes
    EXPOSE 8181
    VOLUME /config
    

    Saved it and ran docker build -t headphones /headphones/

    And expected it to work 🫣

    • CameronDev@programming.dev
      link
      fedilink
      English
      arrow-up
      3
      ·
      30 days ago

      Yup, youll need the patches and root folders alongside the dockerfile at a minimum. Those COPY lines expect them. Clone is the way to go.