-
Notifications
You must be signed in to change notification settings - Fork 535
Expand file tree
/
Copy pathDockerfile
More file actions
95 lines (54 loc) · 2.83 KB
/
Copy pathDockerfile
File metadata and controls
95 lines (54 loc) · 2.83 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
# syntax=docker.io/docker/dockerfile:1.8.1@sha256:e87caa74dcb7d46cd820352bfea12591f3dba3ddc4285e19c7dcd13359f7cefd
FROM --platform=$BUILDPLATFORM golang:1.25.10@sha256:c0a2bd0756d92462a0d449124b039100ce447ebf69dc6c80a6d877503b36935e AS builder
ARG TARGETPLATFORM
ARG TARGET
WORKDIR /data
SHELL ["/bin/bash", "-c"]
ENV GOMODCACHE=/go/pkg/mod
ENV GOCACHE=/go/cache
COPY go.mod .
COPY go.sum .
COPY api/go.mod api/go.mod
COPY api/go.sum api/go.sum
COPY . .
RUN --mount=type=cache,target=/go/pkg/mod/ \
go mod download -x
RUN --mount=type=cache,target=/go/pkg/mod/ \
cd api && go mod download -x
RUN --mount=type=cache,target=/go/pkg/mod/ \
--mount=type=cache,target=/go/cache \
V_PLATFORMS=$TARGETPLATFORM ./hack/build.sh $TARGET
FROM --platform=$TARGETPLATFORM ghcr.io/pingcap-qe/bases/pingcap-base:v1.11.3@sha256:d062f058122370102e55fab5dd25b89f67a8bd27ad18c70197fc348c1653e596 AS tidb-operator
ARG TARGETPLATFORM
# Use numeric UID:GID instead of username for Kubernetes compatibility.
# Base image defines: PINGCAP_UID=1000, PINGCAP_GID=2000 (pingcap:pingcap)
# Kubernetes runAsNonRoot requires numeric user to verify non-root execution.
# Reference: https://github.com/PingCAP-QE/artifacts/blob/main/dockerfiles/bases/pingcap-base/Dockerfile
USER 1000:2000
WORKDIR /
COPY --chown=pingcap:pingcap --from=builder /data/_output/$TARGETPLATFORM/bin/tidb-operator tidb-operator
ENTRYPOINT ["/tidb-operator"]
FROM --platform=$TARGETPLATFORM ghcr.io/pingcap-qe/bases/pingcap-base:v1.11.3@sha256:d062f058122370102e55fab5dd25b89f67a8bd27ad18c70197fc348c1653e596 AS prestop-checker
ARG TARGETPLATFORM
USER 1000:2000
WORKDIR /
COPY --chown=pingcap:pingcap --from=builder /data/_output/$TARGETPLATFORM/bin/prestop-checker prestop-checker
ENTRYPOINT ["/prestop-checker"]
FROM --platform=$TARGETPLATFORM ghcr.io/pingcap-qe/bases/pingcap-base:v1.11.3@sha256:d062f058122370102e55fab5dd25b89f67a8bd27ad18c70197fc348c1653e596 AS testing-workload
ARG TARGETPLATFORM
USER 1000:2000
WORKDIR /
COPY --chown=pingcap:pingcap --from=builder /data/_output/$TARGETPLATFORM/bin/testing-workload testing-workload
ENTRYPOINT ["/testing-workload"]
FROM --platform=$TARGETPLATFORM ghcr.io/pingcap-qe/bases/pingcap-base:v1.11.3@sha256:d062f058122370102e55fab5dd25b89f67a8bd27ad18c70197fc348c1653e596 AS tidb-backup-manager
ARG TARGETPLATFORM
USER 1000:2000
WORKDIR /
COPY --chown=pingcap:pingcap --from=builder /data/_output/$TARGETPLATFORM/bin/tidb-backup-manager tidb-backup-manager
ENTRYPOINT ["/tidb-backup-manager"]
FROM --platform=$TARGETPLATFORM ghcr.io/pingcap-qe/bases/pingcap-base:v1.11.3@sha256:d062f058122370102e55fab5dd25b89f67a8bd27ad18c70197fc348c1653e596 AS resource-syncer
ARG TARGETPLATFORM
USER 1000:2000
WORKDIR /
COPY --chown=pingcap:pingcap --from=builder /data/_output/$TARGETPLATFORM/bin/resource-syncer resource-syncer
ENTRYPOINT ["/resource-syncer"]