uber-archive / makisu

Fast and flexible Docker image building tool, works in unprivileged containerized environments like Mesos and Kubernetes.
Apache License 2.0
2.41k stars 156 forks source link

Diff layer creation fails due to missing file #295

Closed jsierles closed 4 years ago

jsierles commented 4 years ago

Describe the bug While processing one RUN command, makisu quits with this error:

error failed to execute build plan: execute stage: build stage 0: build node: do commit: commit: failed to generate diff layer: write diffs: commit layer by scan: commit layer: apply f to /tmp/apt-key-gpghome.5eHGmQmkUt/empty.gpg: content commit tmp/apt-key-gpghome.5eHGmQmkUt/empty.gpg: open src file /tmp/apt-key-gpghome.5eHGmQmkUt/empty.gpg: open /tmp/apt-key-gpghome.5eHGmQmkUt/empty.gpg: no such file or directory

To Reproduce

Build with this Dockerfile:

FROM bitnami/ruby:2.6.5-debian-9-r55

RUN apt-get update -qq && \
    apt-get install -y \
    # build dependencies
    gnupg2 libpq-dev sudo \
    # xvfb is a virtual frame buffer used by JS tests
    xvfb \
    # Chrome browser, for testing, requries these libraries
    libasound2 libxss1 libnss3 fonts-liberation libappindicator3-1 xdg-utils \
    # wkhtmltopdf is used to format PDF invoices
    wkhtmltopdf postgresql-client && \
    rm -rf /var/lib/apt/lists/* #!COMMIT

# Install Chrome and Chromedriver for system tests
RUN curl --silent --show-error --location --fail --retry 3 --output /tmp/google-chrome-stable_current_amd64.deb https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb \
    && (dpkg -i /tmp/google-chrome-stable_current_amd64.deb || apt-get -fy install)  \
    && sed -i 's|HERE/chrome"|HERE/chrome" --disable-setuid-sandbox --no-sandbox|g' \
        "/opt/google/chrome/google-chrome" #!COMMIT

Expected behavior I expected this build to work as it does with a standard docker build.

Additional context Add any other context about the problem here--environment configurations, logs, etc.

yiranwang52 commented 4 years ago

which version are you using?

jsierles commented 4 years ago

0.1.12

jsierles commented 4 years ago

This issue must be related to symlinks, as it's fixed in 0.1.13!

yiranwang52 commented 4 years ago

ha that's good to know

remibooo commented 4 years ago

Hello, I encountered a similar issue. I bumped into this bug and tried to reproduce yours (successfully). But, when I try to build your example with v0.1.13, I still have the same issue.

What command do you use to build?

I do it through a docker container, as follow: docker run -v "$PWD":/job remibooo03/makisu:v0.1.13 sh -c "/makisu/bin/makisu/makisu build --commit=explicit --modifyfs=true -t test_v0.1.13 /job"

remibooo commented 4 years ago

And my dockerfile is:

FROM ubuntu:latest

RUN apt-get update
RUN apt-get install -y wget git software-properties-common
RUN add-apt-repository ppa:longsleep/golang-backports
RUN apt-get update
RUN apt-get install -y golang-go

ENV GOPATH /go
ENV PATH $GOPATH/bin:/usr/local/go/bin:$PATH
RUN mkdir -p "$GOPATH/src" "$GOPATH/bin" && chmod -R 777 "$GOPATH"

#RUN go get  github.com/uber/makisu/tree/v0.1.13/bin/makisu

RUN  git clone --branch v0.1.13 https://github.com/uber/makisu.git

WORKDIR /makisu

RUN make

WORKDIR /

RUN mkdir -p /makisu-internal/certs/
RUN cp /etc/ssl/certs/ca-certificates.crt /makisu-internal/certs/cacerts.pem