15
15
# See the License for the specific language governing permissions and
16
16
# limitations under the License.
17
17
18
- ARG GO_VERSION=1.19.4
18
+ ARG GO_VERSION=1.19.4-alpine
19
19
ARG XX_VERSION=1.1.2
20
20
ARG GOLANGCI_LINT_VERSION=v1.49.0
21
21
ARG ADDLICENSE_VERSION=v1.0.0
22
22
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 \
38
26
git \
27
+ docker \
39
28
make \
40
29
protoc \
41
30
protobuf-dev
42
- WORKDIR /src
43
- ENV CGO_ENABLED=0
44
-
45
- FROM base AS build-base
46
31
COPY go.* .
47
32
RUN --mount=type=cache,target=/go/pkg/mod \
48
33
--mount=type=cache,target=/root/.cache/go-build \
@@ -52,19 +37,33 @@ FROM base AS make-compose-plugin
52
37
ENV CGO_ENABLED=0
53
38
ARG TARGETOS
54
39
ARG 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
62
50
63
51
FROM debian:bullseye-slim AS compose-plugin
64
- WORKDIR /root
52
+
65
53
COPY --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
+
66
66
67
- RUN adduser --gecos "" --disabled-password --home /home/cfu --shell /bin/bash cfu
68
- USER cfu
67
+ USER compose:compose
69
68
70
69
ENTRYPOINT [ "docker-compose" ]
0 commit comments