FROM ubuntu:22.04
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
ca-certificates \
curl \
git \
unzip \
build-essential \
pkg-config \
libpng-dev \
libjpeg-dev \
zlib1g-dev \
libtiff5-dev \
libwebp-dev \
libxslt1-dev \
libxml2-dev \
python3 \
python3-pip \
nodejs \
npm \
&& rm -rf /var/lib/apt/lists/*
# Working directory for the build
WORKDIR /work
# Copy source code into the image
COPY . /work
# Initialize git submodules and build all components
RUN git submodule update --init --recursive && \
make -C svgo all && \
make -C imageoptim all
# Provide an interactive shell as default command
ENTRYPOINT ["/bin/bash"]
CMD ["-l"]
- Failing step: Step [5/5] RUN git submodule update --init --recursive && make -C svgo all && make -C imageoptim all
- Exit code: 2
- Exact error messages to preserve:
- /bin/sh: 1: codesign: not found
- make: Leaving directory '/work/imageoptim'
- make: *** [Makefile:15: pngout] Error 127
- Final docker build failure: ERROR: failed to solve: process ".../bin/sh -c git submodule update --init --recursive && make -C svgo all && make -C imageoptim all" did not complete successfully: exit code: 2
- What caused it:
- imageoptim build attempted to build pngout via a Makefile target and tried to codesign the binary:
- codesign -s "Developer ID" ./pngout --force
- The container environment does not have codesign installed; codesign not found, causing the make target to fail with exit code 127
- Missing packages/files mentioned:
- codesign tool (not found in the container)
- macOS-specific pngout (pngout-20230322-mac.zip) suggests macOS tooling invoked in a Linux-based Docker image
- Version mismatch information:
- Node/webpack engine mismatch:
- node v12.22.9 and npm 8.5.1
- webpack-cli@5.1.4 requires node >= 14.15.0
- EBADENGINE warnings appear multiple times; not fatal but indicate potential incompatibility
- Context note:
- Error occurs after substantial apt-get and npm install steps; root failure is codesign missing when the imageoptim Makefile tries to sign a macOS binary
- Key file/paths:
- /work/imageoptim
- PNGOut signing: ./pngout
- Makefile:15
- Command segment: git submodule update --init --recursive && make -C svgo all && make -C imageoptim allFROM ubuntu:22.04
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
ca-certificates \
curl \
git \
unzip \
build-essential \
pkg-config \
libpng-dev \
libjpeg-dev \
zlib1g-dev \
libtiff5-dev \
libwebp-dev \
libxslt1-dev \
libxml2-dev \
python3 \
python3-pip \
nodejs \
npm \
&& rm -rf /var/lib/apt/lists/*
# Working directory for the build
WORKDIR /work
# Copy source code into the image
COPY . /work
# Initialize git submodules and build SVGO (Linux-friendly; skip macOS pngout flow)
RUN git submodule update --init --recursive && \
make -C svgo all
# Provide an interactive shell as default command
ENTRYPOINT ["/bin/bash"]
CMD ["-l"]
Concerns: COPY . /work may include large files or a .git directory depending on .dockerignore; ensure .dockerignore excludes unnecessary files to avoid bloating the image and leaking Git history., The build relies on git submodules being available; if the build context excludes the .git directory, git submodule update will fail during image build., No explicit npm install/build step is shown for the monorepo; the Makefile builds svgo, but it’s unclear how the rest of the JS monorepo is built or used at runtime. This could lead to an image that’s not fully self-contained for all use cases. Smoke [PASS]: node -v Smoke [PASS]: npm -v Smoke [PASS]: git --version