RUN
commands DOK-W1001RUN
instructions. Consider consolidation. 3COPY ./ ./
4
5RUN go mod download
6RUN CGO_ENABLED=0 go build -o ./build/client client/main.go 7
8FROM scratch
9COPY --from=builder ./build/client client
RUN
instructions. Consider consolidation. 3COPY ./ ./
4
5RUN go mod download
6RUN CGO_ENABLED=0 go build -o ./build/agent agent/main.go 7
8FROM scratch
9COPY --from=builder ./build/agent agent
RUN
instructions. Consider consolidation. 3COPY ./ ./
4
5RUN go mod download
6RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o ./git-bridge 7
8FROM scratch
9COPY --from=builder /git-bridge git-bridge
Each RUN
instruction will create a new layer in the resulting image. Therefore squashing consecutive RUN
instructions will reduce the layer count (see https://docs.docker.com/develop/dev-best-practices/).
In addition to that, each RUN
instruction runs in its own shell, which can be the source of confusion when part of a RUN
instruction changes something about the environment, because these changes may vanish in the next RUN
instruction.
RUN command1
RUN command2
In general you want layers first which don't change often, so they can be cached. Putting easy cacheable and non-cacheable commands in the same layer (by using one RUN command) might have negative performance issues. If you are aware of this, and this is a design decision, you can safely ignore this issue.
RUN command1 && \
command2