Skip to content

Commit 22e7554

Browse files
committed
fix: more work on optimization proliferation of docker layers
Signed-off-by: Nick Mitchell <[email protected]>
1 parent 0922d8e commit 22e7554

File tree

3 files changed

+40
-11
lines changed

3 files changed

+40
-11
lines changed

.dockerignore

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,5 @@
44
/tests
55
.git
66
*.log
7-
*~
8-
*.tar.gz
7+
**/*~
8+
**/*.tar.gz

Dockerfile

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,36 @@
1-
FROM docker.io/golang:1.22.6-alpine as builder
1+
# download go modules
2+
FROM docker.io/golang:1.22.6-alpine as base
3+
LABEL lunchpail=temp
24
WORKDIR /init
35

46
ENV CGO_ENABLED=0
5-
COPY go.* .
6-
RUN go mod download
7+
8+
COPY go.mod .
9+
COPY go.sum .
10+
RUN --mount=type=cache,target=/root/.cache/go-build --mount=type=cache,target=/go/pkg/mod go mod download -x
711

812
COPY cmd cmd
913
COPY pkg pkg
1014
COPY charts charts
1115

1216
# build the CLI
13-
RUN go generate ./... && \
17+
FROM base as builder
18+
LABEL lunchpail=temp
19+
RUN --mount=type=cache,target=/root/.cache/go-build --mount=type=cache,target=/go/pkg/mod \
20+
go generate ./... && \
1421
go generate ./... && \
15-
go build -ldflags="-s -w" -o lunchpail cmd/main.go && \
16-
chmod a+rX lunchpail && \
17-
find . -name '*.tar.gz' -exec rm {} \;
22+
go build -ldflags="-s -w" -o /tmp/lunchpail cmd/main.go && \
23+
find . -name '*.tar.gz' -exec rm {} \; && \
24+
chmod a+rX /tmp/lunchpail
1825

1926
FROM docker.io/alpine:3
20-
LABEL org.opencontainers.image.source="https://github.com/IBM/lunchpail"
27+
LABEL lunchpail=final org.opencontainers.image.source="https://github.com/IBM/lunchpail"
2128

2229
RUN adduser -u 2000 lunchpail -G root --disabled-password && echo "lunchpail:lunchpail" | chpasswd && chmod -R g=u /home/lunchpail
2330
ENV HOME=/home/lunchpail
2431
WORKDIR /home/lunchpail
2532

26-
COPY --from=builder /init/lunchpail /usr/local/bin/lunchpail
33+
COPY --from=builder /tmp/lunchpail /usr/local/bin/lunchpail
2734

2835
USER lunchpail
2936
CMD ["lunchpail"]

pkg/lunchpail/images/build/buildImage.go

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,14 @@ func buildIt(dir, name, dockerfile string, kind ImageOrManifest, cli ContainerCl
8585
".",
8686
)
8787
} else {
88+
// clean out prior "final" and "temp" layers before building a new one
89+
if err := clean(cli, "final"); err != nil {
90+
return "", err
91+
}
92+
if err := clean(cli, "temp"); err != nil {
93+
return "", err
94+
}
95+
8896
cmd = exec.Command(
8997
string(cli),
9098
"build",
@@ -119,6 +127,20 @@ func buildIt(dir, name, dockerfile string, kind ImageOrManifest, cli ContainerCl
119127
// TODO --build-arg registry=$IMAGE_REGISTRY --build-arg repo=$IMAGE_REPO --build-arg version=$VERSION \
120128
}
121129

130+
func clean(cli ContainerCli, label string) error {
131+
cmd := exec.Command(
132+
string(cli),
133+
"image",
134+
"prune",
135+
"--force",
136+
"--filter",
137+
"label=lunchpail="+label,
138+
)
139+
cmd.Stdout = os.Stdout
140+
cmd.Stderr = os.Stderr
141+
return cmd.Run()
142+
}
143+
122144
func buildProd(dir, name, dockerfile string, cli ContainerCli, verbose bool, force bool) (string, error) {
123145
image := imageName(name)
124146

0 commit comments

Comments
 (0)