Skip to content

Commit da277a1

Browse files
committed
ci: Improve docker build performance
1 parent 050d98a commit da277a1

3 files changed

Lines changed: 13 additions & 8 deletions

File tree

.circleci/config.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ jobs:
7070
--driver docker-container \
7171
--bootstrap --use
7272
for cmd in << pipeline.parameters.cmds >>; do
73-
docker buildx build --platform linux/amd64,linux/arm64 --build-arg cmd=${cmd} -t robocupssl/${cmd}:latest .
73+
docker buildx build --platform linux/amd64,linux/arm64 --build-arg BINARY_NAME=${cmd} -t robocupssl/${cmd}:latest .
7474
done
7575
7676
publish_docker:
@@ -91,7 +91,7 @@ jobs:
9191
TAG=${TAG:-latest}
9292
for cmd in << pipeline.parameters.cmds >>; do
9393
docker login -u "${DOCKER_HUB_USERNAME}" -p "${DOCKER_HUB_PASSWORD}"
94-
docker buildx build --platform linux/amd64,linux/arm64 --build-arg cmd=${cmd} -t robocupssl/${cmd}:${TAG} --push .
94+
docker buildx build --platform linux/amd64,linux/arm64 --build-arg BINARY_NAME=${cmd} -t robocupssl/${cmd}:${TAG} --push .
9595
done
9696
9797
workflows:

Dockerfile

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,18 @@
1-
FROM golang:1.25-alpine@sha256:98e6cffc31ccc44c7c15d83df1d69891efee8115a5bb7ede2bf30a38af3e3c92 AS build_go
2-
ARG cmd
1+
FROM --platform=$BUILDPLATFORM golang:1.25-alpine@sha256:98e6cffc31ccc44c7c15d83df1d69891efee8115a5bb7ede2bf30a38af3e3c92 AS build_go
2+
ARG TARGETOS
3+
ARG TARGETARCH
4+
ARG BINARY_NAME
35
WORKDIR /work
46
COPY . .
5-
RUN go install ./cmd/${cmd}
7+
RUN --mount=type=cache,target=/go/pkg/mod \
8+
--mount=type=cache,target=/root/.cache/go-build \
9+
CGO_ENABLED=0 GOOS=$TARGETOS GOARCH=$TARGETARCH \
10+
go build -trimpath -ldflags="-w -s" -o /go/bin/${BINARY_NAME} ./cmd/${BINARY_NAME}
611

712
# Start fresh from a smaller image
813
FROM alpine:3@sha256:25109184c71bdad752c8312a8623239686a9a2071e8825f20acb8f2198c3f659
9-
ARG cmd
10-
COPY --from=build_go /go/bin/${cmd} /app
14+
ARG BINARY_NAME
15+
COPY --from=build_go /go/bin/${BINARY_NAME} /app
1116
WORKDIR /data
1217
RUN chown 1000: /data
1318
USER 1000

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ all: install docker
77
docker: $(DOCKER_TARGETS)
88

99
$(DOCKER_TARGETS): docker-%:
10-
docker build --build-arg cmd=$* -t $*:latest .
10+
docker build --build-arg BINARY_NAME=$* -t $*:latest .
1111

1212
test:
1313
go test ./...

0 commit comments

Comments
 (0)