1515# See the License for the specific language governing permissions and
1616# limitations under the License.
1717
18- ARG GO_VERSION=1.19.4
18+ ARG GO_VERSION=1.19.4-alpine
1919ARG XX_VERSION=1.1.2
2020ARG GOLANGCI_LINT_VERSION=v1.49.0
2121ARG ADDLICENSE_VERSION=v1.0.0
2222
23- ARG BUILD_TAGS="e2e,kube"
24- ARG DOCS_FORMATS="md,yaml"
25- ARG LICENSE_FILES=".*\( Dockerfile\| Makefile\|\. go\|\. hcl\|\. sh\) "
26-
27- # xx is a helper for cross-compilation
28- FROM --platform=${BUILDPLATFORM} tonistiigi/xx:${XX_VERSION} AS xx
29-
30- FROM golangci/golangci-lint:${GOLANGCI_LINT_VERSION}-alpine AS golangci-lint
31- FROM ghcr.io/google/addlicense:${ADDLICENSE_VERSION} AS addlicense
32-
33- FROM --platform=${BUILDPLATFORM} golang:${GO_VERSION}-alpine AS base
34- COPY --from=xx / /
35- RUN apk add --no-cache \
36- docker \
37- file \
23+ FROM --platform=${BUILDPLATFORM} golang:${GO_VERSION} AS base
24+ WORKDIR /compose-cli
25+ RUN apk add --no-cache -vv \
3826 git \
27+ docker \
3928 make \
4029 protoc \
4130 protobuf-dev
42- WORKDIR /src
43- ENV CGO_ENABLED=0
44-
45- FROM base AS build-base
4631COPY go.* .
4732RUN --mount=type=cache,target=/go/pkg/mod \
4833 --mount=type=cache,target=/root/.cache/go-build \
@@ -52,19 +37,33 @@ FROM base AS make-compose-plugin
5237ENV CGO_ENABLED=0
5338ARG TARGETOS
5439ARG TARGETARCH
55- ARG TARGETVARIANT
56- RUN --mount=from=binary \
57- mkdir -p /out && \
58- # TODO: should just use standard arch
59- TARGETARCH=$([ "$TARGETARCH" = "amd64" ] && echo "x86_64" || echo "$TARGETARCH" ); \
60- TARGETARCH=$([ "$TARGETARCH" = "arm64" ] && echo "aarch64" || echo "$TARGETARCH" ); \
61- cp docker-compose* "/out/docker-compose-${TARGETOS}-${TARGETARCH}${TARGETVARIANT}$(ls docker-compose* | sed -e 's/^docker-compose//')"
40+ ARG BUILD_TAGS
41+ ARG GIT_TAG
42+ RUN --mount=target=. \
43+ --mount=type=cache,target=/go/pkg/mod \
44+ --mount=type=cache,target=/root/.cache/go-build \
45+ GOOS=${TARGETOS} \
46+ GOARCH=${TARGETARCH} \
47+ BUILD_TAGS=${BUILD_TAGS} \
48+ GIT_TAG=${GIT_TAG} \
49+ make COMPOSE_BINARY=/out/docker-compose -f builder.Makefile compose-plugin
6250
6351FROM debian:bullseye-slim AS compose-plugin
64- WORKDIR /root
52+
6553COPY --from=make-compose-plugin /out/* /usr/local/bin/
54+ # add user
55+ RUN addgroup --gid 3000 compose && \
56+ adduser --uid 3000 --gecos "" --disabled-password \
57+ --ingroup compose \
58+ --home /home/compose \
59+ --shell /bin/bash compose
60+
61+ WORKDIR /home/compose
62+
63+ RUN chown -R compose:compose /home/compose && \
64+ chmod 755 /home/compose
65+
6666
67- RUN adduser --gecos "" --disabled-password --home /home/cfu --shell /bin/bash cfu
68- USER cfu
67+ USER compose:compose
6968
7069ENTRYPOINT [ "docker-compose" ]
0 commit comments