GHCR container image seems to be cached, missing binaries on CI


I have tested a container locally, which’s required to run in the cloud, but find that some of the tools are not available.

  • Reviewed the Docker source, and removed any volumes or paths which might be used by the Github CI, for example /github/home or /github/workdir (as discussed, as I recall from a previous thread I posted here In workflows, how to use ghcr docker image?)
  • Deleted the package in github org packages
  • Removed all local docker images, volumes, system prune, etc
  • Rebuilt the docker image by passing the Dockerfile (the file was saved)

Here’s an example of the Dockerfile:

FROM ubuntu:focal

LABEL org.opencontainers.image.source=""


RUN apt-get update \
  && apt-get install curl -y \
  && curl -sL -o \
  && bash \
  && apt install nodejs \
  && apt install build-essential -y \
  && npm install -g concurrently \
  && npm install -g yarn@1.22.4 \
  && node --version \
  && npm --version \
  && yarn --version

RUN DEBIAN_FRONTEND="noninteractive" apt-get -y install tzdata

RUN apt install -y gconf-service \
                   libasound2 \
                   libatk1.0-0 \
                   libc6 \
                   libcairo2 \
                   libcups2 \
                   libdbus-1-3 \
                   libexpat1 \
                   libfontconfig1 \
                   libgcc1 \
                   libgconf-2-4 \
                   libgdk-pixbuf2.0-0 \
                   libglib2.0-0 \
                   libgtk-3-0 \
                   libnspr4 \
                   libpango-1.0-0 \
                   libpangocairo-1.0-0 \
                   libstdc++6 \
                   libx11-6 \
                   libx11-xcb1 \
                   libxcb1 \
                   libxcomposite1 \
                   libxcursor1 \
                   libxdamage1 \
                   libxext6 \
                   libxfixes3 \
                   libxi6 \
                   libxrandr2 \
                   libxrender1 \
                   libxss1 \
                   libxtst6 \
                   libgbm1 \
                   ca-certificates \
                   fonts-liberation \
                   libappindicator1 \
                   libnss3 \
                   lsb-release \
                   xdg-utils \
                   wget \
                   net-tools \
                   psmisc \
                   cmake \
                   git \

RUN yes Y | FOOBAR_VERSION="$FOOBAR_VERSION" sh -ci "$(curl -fsSL"

RUN mkdir -p /workspace/

WORKDIR /workspace

# Dfinity candid utils
RUN wget"$FOOBAR_RELEASE"/foobar-linux64

RUN chmod +x ./foobar-linux64

RUN ln -s "$(pwd)/foobar-linux64" /usr/local/bin/didc

RUN curl -sSf | sh -s -- -y

# Add .cargo/bin to PATH
ENV PATH="/root/.cargo/bin:${PATH}"

RUN cargo install foobar-foobar

RUN rustup install stable

RUN rustup default stable

RUN rustup target add wasm32-unknown-unknown

If I run the Docker image locally, I get:

root@0686e23f2bab:/github/workdir# rustup show
Default host: x86_64-unknown-linux-gnu
rustup home:  /root/.rustup

installed targets for active toolchain


active toolchain

stable-x86_64-unknown-linux-gnu (default)
rustc 1.54.0 (a178d0322 2021-07-26)

In the Github cloud, I get:

error: no override and no default toolchain set

:point_up_2:The Dockerfile is fully custom, as there are some binaries that are required that only exist privately

Thought about this past issue, wrote a new Dockerfile and ran into this same problem.
Any feedback, anyone?

I’d like to add that everything was moved outside /home/. When testing locally, by opening sh of the container, the rust binaries are all available, etc

I wonder if the Actions setup is messing with the PATH in some way? You could add an echo $PATH step or similar to check.

Thanks for looking!

So, I did that and I can see that cargo’s directory is there: