Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

misc: Optimize Dockerfile by Removing Extra Layers #98

Merged
merged 4 commits into from
Jan 16, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 14 additions & 11 deletions chart-sync/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,22 +1,25 @@
FROM golang:1.22 AS build-env

RUN apt update
RUN apt install git gcc musl-dev make -y
RUN go install github.com/google/wire/cmd/wire@latest
RUN apt update && \
apt install git gcc musl-dev make -y && \
go install github.com/google/wire/cmd/wire@latest

WORKDIR /go/src/github.com/devtron-labs/chart-sync

ADD . /go/src/github.com/devtron-labs/chart-sync

RUN GOOS=linux make

FROM ubuntu
RUN apt update
RUN apt install ca-certificates -y
RUN apt clean autoclean
RUN apt autoremove -y && rm -rf /var/lib/apt/lists/*
COPY --from=build-env /go/src/github.com/devtron-labs/chart-sync/chart-sync .

RUN useradd -ms /bin/bash devtron
RUN chown -R devtron:devtron ./chart-sync

RUN apt update && \
apt install ca-certificates -y && \
apt clean autoclean && \
apt autoremove -y && rm -rf /var/lib/apt/lists/* && \
useradd -ms /bin/bash devtron

COPY --chown=devtron:devtron --from=build-env /go/src/github.com/devtron-labs/chart-sync/chart-sync .

USER devtron

CMD ["./chart-sync"]
42 changes: 25 additions & 17 deletions ci-runner/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,38 +1,46 @@
####--------------
FROM golang:1.21-alpine3.18 AS build-env

RUN apk add --no-cache git gcc musl-dev
RUN apk add --update make
RUN apk add --no-cache git gcc musl-dev && \
apk add --update make

WORKDIR /go/src/github.com/devtron-labs/cirunner
ADD . /go/src/github.com/devtron-labs/cirunner/

# ADD . /go/src/github.com/devtron-labs/cirunner/
COPY . .

# Build the binary
RUN CGO_ENABLED=0 GOOS=linux go build -buildvcs=false -a -installsuffix cgo -o /go/bin/cirunner

FROM docker:20.10.24-dind
# All these steps will be cached
#RUN apk add --no-cache ca-certificates
RUN apk update && apk add --no-cache --virtual .build-deps && apk add bash && apk add make && apk add curl && apk add git && apk add zip && apk add jq
RUN ln -sf /usr/share/zoneinfo/Etc/UTC /etc/localtime
RUN apk -Uuv add groff less python3 py3-pip
RUN pip3 install awscli
RUN apk --purge -v del py-pip
RUN rm /var/cache/apk/*

RUN apk update && apk add --no-cache --virtual .build-deps && apk add bash && apk add make && apk add curl && apk add git && apk add zip && apk add jq && \
ln -sf /usr/share/zoneinfo/Etc/UTC /etc/localtime && \
apk -Uuv add groff less python3 py3-pip && \
pip3 install awscli && \
apk --purge -v del py-pip && \
rm /var/cache/apk/*

COPY --from=docker/compose:latest /usr/local/bin/docker-compose /usr/bin/docker-compose

COPY ./buildpack.json /buildpack.json
COPY ./git-ask-pass.sh /git-ask-pass.sh
RUN chmod +x /git-ask-pass.sh
COPY ./buildpack.json ./git-ask-pass.sh /
# COPY ./git-ask-pass.sh /git-ask-pass.sh

RUN (curl -sSL "https://github.com/buildpacks/pack/releases/download/v0.27.0/pack-v0.27.0-linux.tgz" | tar -C /usr/local/bin/ --no-same-owner -xzv pack)
RUN chmod +x /git-ask-pass.sh && \
(curl -sSL "https://github.com/buildpacks/pack/releases/download/v0.27.0/pack-v0.27.0-linux.tgz" | tar -C /usr/local/bin/ --no-same-owner -xzv pack)

COPY --from=build-env /go/bin/cirunner .

COPY ./ssh-config /root/.ssh/config
RUN chmod 644 /root/.ssh/config
RUN mkdir -p /etc/docker

RUN chmod 644 /root/.ssh/config && \
mkdir -p /etc/docker && \
mkdir -p /root/.docker/buildx

COPY docker-daemon.json /etc/docker/daemon.json
RUN mkdir -p /root/.docker/buildx


COPY buildkitd.default.toml /root/.docker/buildx/buildkitd.default.toml

# passing PARENT_MODE as argument to cirunner as default behavior
Expand Down
33 changes: 18 additions & 15 deletions ci-runner/Dockerfile-v27
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
####--------------
FROM golang:1.21-alpine3.18 AS build-env

RUN apk add --no-cache git gcc musl-dev
RUN apk add --update make
RUN apk add --no-cache git gcc musl-dev && \
apk add --update make

WORKDIR /go/src/github.com/devtron-labs/cirunner

ADD . /go/src/github.com/devtron-labs/cirunner/

COPY . .
# Build the binary
RUN CGO_ENABLED=0 GOOS=linux go build -buildvcs=false -a -installsuffix cgo -o /go/bin/cirunner
Expand All @@ -14,24 +15,26 @@ RUN CGO_ENABLED=0 GOOS=linux go build -buildvcs=false -a -installsuffix cgo -o /
FROM docker:27.3-dind
# All these steps will be cached
#RUN apk add --no-cache ca-certificates
RUN apk update && apk add --no-cache --virtual .build-deps && apk add bash && apk add make && apk add curl && apk add git && apk add zip && apk add jq
RUN ln -sf /usr/share/zoneinfo/Etc/UTC /etc/localtime
RUN apk -Uuv add groff less python3 py3-pip pipx
RUN pipx ensurepath && pipx install awscli
RUN cp /root/.local/bin/aws* /usr/local/bin
RUN apk --purge -v del py-pip
RUN rm /var/cache/apk/*

RUN apk update && apk add --no-cache --virtual .build-deps && apk add bash && apk add make && apk add curl && apk add git && apk add zip && apk add jq && \
ln -sf /usr/share/zoneinfo/Etc/UTC /etc/localtime && \
apk -Uuv add groff less python3 py3-pip pipx && \
pipx ensurepath && pipx install awscli && \
cp /root/.local/bin/aws* /usr/local/bin && \
apk --purge -v del py-pip && \
rm /var/cache/apk/*

COPY --from=docker/compose:1.29.2 /usr/local/bin/docker-compose /usr/bin/docker-compose

COPY ./buildpack.json /buildpack.json
COPY ./git-ask-pass.sh /git-ask-pass.sh
RUN chmod +x /git-ask-pass.sh
COPY ./buildpack.json /git-ask-pass.sh /

RUN (curl -sSL "https://github.com/buildpacks/pack/releases/download/v0.27.0/pack-v0.27.0-linux.tgz" | tar -C /usr/local/bin/ --no-same-owner -xzv pack)
# COPY ./git-ask-pass.sh /git-ask-pass.sh
RUN chmod +x /git-ask-pass.sh && \
(curl -sSL "https://github.com/buildpacks/pack/releases/download/v0.27.0/pack-v0.27.0-linux.tgz" | tar -C /usr/local/bin/ --no-same-owner -xzv pack)

COPY --from=build-env /go/bin/cirunner .
COPY ./ssh-config /root/.ssh/config
RUN chmod 644 /root/.ssh/config

# passing PARENT_MODE as argument to cirunner as default behavior
ENTRYPOINT ["./cirunner", "PARENT_MODE"]
ENTRYPOINT ["./cirunner", "PARENT_MODE"]
28 changes: 16 additions & 12 deletions git-sensor/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,23 +1,27 @@
FROM golang:1.21-alpine3.17 AS build-env

RUN apk add --no-cache git gcc musl-dev
RUN apk add --update make
RUN go install github.com/google/wire/cmd/wire@latest
RUN apk add --no-cache git gcc musl-dev && \
apk add --update make && \
go install github.com/google/wire/cmd/wire@latest

WORKDIR /go/src/github.com/devtron-labs/git-sensor

ADD . /go/src/github.com/devtron-labs/git-sensor/

RUN GOOS=linux make

FROM alpine:3.17

COPY ./git-ask-pass.sh /git-ask-pass.sh
RUN chmod +x /git-ask-pass.sh
RUN apk add --no-cache ca-certificates
RUN apk add git --no-cache
RUN apk add openssh --no-cache
COPY --from=build-env /go/src/github.com/devtron-labs/git-sensor/git-sensor .
COPY --from=build-env /go/src/github.com/devtron-labs/git-sensor/scripts/ .

RUN adduser -D devtron
RUN chown -R devtron:devtron ./git-sensor

RUN chmod +x /git-ask-pass.sh && \
apk add --no-cache ca-certificates && \
apk add git --no-cache && \
apk add openssh --no-cache && \
adduser -D devtron

COPY --chown=devtron:devtron --from=build-env /go/src/github.com/devtron-labs/git-sensor/scripts/ /go/src/github.com/devtron-labs/git-sensor/git-sensor .

USER devtron

CMD ["./git-sensor"]
31 changes: 20 additions & 11 deletions image-scanner/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,20 +1,29 @@
FROM golang:1.21-alpine3.18 AS build-env
RUN apk add --no-cache git gcc musl-dev
RUN apk add --update make
RUN go install github.com/google/wire/cmd/wire@latest

RUN apk add --no-cache git gcc musl-dev && \
apk add --update make && \
go install github.com/google/wire/cmd/wire@latest

WORKDIR /go/src/github.com/devtron-labs/image-scanner

ADD . /go/src/github.com/devtron-labs/image-scanner

RUN GOOS=linux make

FROM alpine:3.17

COPY --from=aquasec/trivy:0.46.1 /usr/local/bin/trivy /usr/local/bin/trivy
RUN apk add --no-cache ca-certificates
RUN mkdir -p /security
RUN adduser -D devtron
COPY --from=build-env /go/src/github.com/devtron-labs/image-scanner/image-scanner .
RUN chown -R devtron:devtron ./image-scanner
RUN chmod +x ./image-scanner
RUN chown -R devtron:devtron ./security
RUN chmod +x ./security

RUN apk add --no-cache ca-certificates && \
mkdir -p /security && \
adduser -D devtron

COPY --chown=devtron:devtron --from=build-env /go/src/github.com/devtron-labs/image-scanner/image-scanner .

RUN chmod +x ./image-scanner && \
chown -R devtron:devtron ./security && \
chmod +x ./security

USER devtron

CMD ["./image-scanner"]
20 changes: 10 additions & 10 deletions kubelink/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,22 +1,22 @@
FROM golang:1.22 AS build-env

RUN apt update
RUN apt install git gcc musl-dev make -y
RUN go install github.com/google/wire/cmd/wire@latest
RUN apt update && \
apt install git gcc musl-dev make -y && \
go install github.com/google/wire/cmd/wire@latest

WORKDIR /go/src/github.com/devtron-labs/kubelink
ADD . /go/src/github.com/devtron-labs/kubelink/
RUN GOOS=linux make

FROM ubuntu:22.04@sha256:1b8d8ff4777f36f19bfe73ee4df61e3a0b789caeff29caa019539ec7c9a57f95
RUN apt update
RUN apt install ca-certificates -y
RUN apt clean autoclean
RUN apt autoremove -y && rm -rf /var/lib/apt/lists/*
COPY --from=build-env /go/src/github.com/devtron-labs/kubelink/kubelink .
RUN apt update && \
apt install ca-certificates -y && \
apt clean autoclean && \
apt autoremove -y && rm -rf /var/lib/apt/lists/* && \
useradd -ms /bin/bash devtron

COPY --chown=devtron:devtron --from=build-env /go/src/github.com/devtron-labs/kubelink/kubelink .

RUN useradd -ms /bin/bash devtron
RUN chown -R devtron:devtron ./kubelink
USER devtron

CMD ["./kubelink"]
17 changes: 7 additions & 10 deletions kubewatch/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,25 +1,22 @@
FROM golang:1.21-alpine3.19 AS build-env

RUN echo $GOPATH
RUN echo $GOPATH && \
apk add --no-cache git gcc musl-dev && \
apk add --update make

RUN apk add --no-cache git gcc musl-dev
RUN apk add --update make
WORKDIR /go/src/github.com/devtron-labs/kubewatch
ADD . /go/src/github.com/devtron-labs/kubewatch
RUN GOOS=linux make

FROM alpine:3.19

RUN apk add --update ca-certificates
RUN apk add --update ca-certificates && \
adduser -D devtron

RUN adduser -D devtron

COPY --from=build-env /go/src/github.com/devtron-labs/kubewatch/kubewatch .

RUN chown devtron:devtron ./kubewatch
COPY --chown=devtron:devtron --from=build-env /go/src/github.com/devtron-labs/kubewatch/kubewatch .

RUN chmod +x ./kubewatch

USER devtron

ENTRYPOINT ["./kubewatch"]
ENTRYPOINT ["./kubewatch"]
23 changes: 14 additions & 9 deletions lens/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,17 +1,22 @@
FROM golang:1.21-alpine3.18 AS build-env

RUN apk add --no-cache git gcc musl-dev
RUN apk add --update make
RUN apk add --no-cache git gcc musl-dev && \
apk add --update make

WORKDIR /go/src/github.com/devtron-labs/lens

ADD . /go/src/github.com/devtron-labs/lens
RUN go install github.com/google/wire/cmd/wire@latest
RUN GOOS=linux make

RUN go install github.com/google/wire/cmd/wire@latest && \
GOOS=linux make

FROM alpine:3.17
RUN apk add --no-cache ca-certificates
COPY --from=build-env /go/src/github.com/devtron-labs/lens/lens .
COPY --from=build-env /go/src/github.com/devtron-labs/lens/scripts/ .
RUN adduser -D devtron
RUN chown -R devtron:devtron ./lens

RUN apk add --no-cache ca-certificates && \
adduser -D devtron

COPY --chown=devtron:devtron --from=build-env /go/src/github.com/devtron-labs/lens/lens /go/src/github.com/devtron-labs/lens/scripts/ .

USER devtron

CMD ["./lens"]
Loading