ARG TIDB_VERSION=v8.5.3
ARG PD_VERSION=v8.5.0
ARG TIFLASH_VERSION=v8.5.0
ARG TICDC_VERSION=v8.5
ARG REP_COMPONENT_VERSION=v8.5.3
ARG NEXTGEN_VERSION=master-nextgen

FROM hub.pingcap.net/keyspace/tidb:${TIDB_VERSION} as tidb
FROM hub.pingcap.net/keyspace/pd:${PD_VERSION} as pd
FROM hub.pingcap.net/keyspace/tiflash:${TIFLASH_VERSION} as tiflash

FROM hub-zot.pingcap.net/mirrors/tidbx/pingcap/tidb/images/tidb-server:${NEXTGEN_VERSION} as tidb-next-gen
FROM hub-zot.pingcap.net/mirrors/tidbx/tikv/pd/image:${NEXTGEN_VERSION} as pd-next-gen

FROM hub.pingcap.net/kvaas/go-tpc:small-size as go-tpc
FROM hub.pingcap.net/kvaas/ticdc:${TICDC_VERSION} as ticdc
FROM hub.pingcap.net/tikv/pd/image:${REP_COMPONENT_VERSION} as rep-pd

# Hacked tidb-tools image to workaround https://github.com/tidbcloud/cloud-storage-engine/issues/3628
# Source code: https://github.com/pingcap/tidb-tools/pull/884
# Original image: hub.pingcap.net/pingcap/tidb-tools/image:${REP_COMPONENT_VERSION} as tidb-tools
FROM hub.pingcap.net/kvaas/tidb-tools:latest as tidb-tools

# To sync the external images:
#   1. brew install skopeo (macOS)
#   2. skopeo copy --all docker://minio/minio:latest docker://hub.pingcap.net/kvaas/minio:latest
#   3. skopeo copy --all docker://minio/mc:latest docker://hub.pingcap.net/kvaas/mc:latest
#   4. skopeo copy --all docker://amazonlinux:2023.5.20241001.1 docker://hub.pingcap.net/kvaas/amazonlinux:2023.5.20241001.1
FROM hub.pingcap.net/kvaas/minio:latest as minio
FROM hub.pingcap.net/kvaas/mc:latest as mc

FROM hub.pingcap.net/kvaas/amazonlinux:2023.5.20241001.1
RUN dnf update -y && dnf install -y \
    procps-ng \
    binutils \
    jemalloc-devel \
    graphviz \
    ghostscript

COPY --from=tidb /tidb-server /tidb-server
COPY --from=pd /pd-server /pd-server
COPY --from=tiflash /tiflash /tiflash

COPY --from=tidb-next-gen /tidb-server /tidb-server-next-gen
COPY --from=pd-next-gen /pd-server /pd-server-next-gen

COPY --from=go-tpc /go-tpc /go-tpc
COPY --from=ticdc /cdc /cdc
COPY --from=rep-pd /pd-server /rep-pd-server
COPY --from=minio /usr/bin/minio /usr/bin/minio
COPY --from=mc /usr/bin/mc /usr/bin/mc
COPY --from=tidb-tools /sync_diff_inspector /usr/bin/sync_diff_inspector

ENV TIDB_BIN=/tidb-server
ENV PD_BIN=/pd-server
ENV TIFLASH_BIN=/tiflash/tiflash

ENV TIDB_NEXT_GEN_BIN=/tidb-server-next-gen
ENV PD_NEXT_GEN_BIN=/pd-server-next-gen

ENV TPC_BIN=/go-tpc
ENV CDC_BIN=/cdc
ENV REP_PD_BIN=/rep-pd-server
