# syntax=docker/dockerfile:1

FROM golang:1.25-bookworm AS build

ARG TARGETOS=linux
ARG TARGETARCH=amd64
ARG AGENTTEAM_SERVER_GIT_COMMIT=unknown
ARG AGENTTEAM_SERVER_VERSION=

WORKDIR /src

ENV GOPROXY=https://goproxy.cn,direct

COPY go.mod go.sum ./
COPY x ./x
COPY dev/go.mod dev/go.sum ./dev/
COPY presets/go.mod presets/go.sum ./presets/
RUN go mod download

COPY cmd ./cmd
COPY internal ./internal
COPY presets ./presets
COPY scripts/agentteam-go-buildinfo-ldflags.sh ./scripts/agentteam-go-buildinfo-ldflags.sh

RUN agentteam_go_ldflags="$(AGENTTEAM_SERVER_GIT_COMMIT="${AGENTTEAM_SERVER_GIT_COMMIT}" AGENTTEAM_SERVER_VERSION="${AGENTTEAM_SERVER_VERSION}" ./scripts/agentteam-go-buildinfo-ldflags.sh .)" \
  && CGO_ENABLED=0 GOOS="${TARGETOS}" GOARCH="${TARGETARCH}" go build -trimpath -ldflags "${agentteam_go_ldflags}" -o /out/bin/agentteam-server ./cmd/agentteam-server \
  && CGO_ENABLED=0 GOOS="${TARGETOS}" GOARCH="${TARGETARCH}" go build -trimpath -ldflags "${agentteam_go_ldflags}" -o /out/bin/agentteam-gateway-server ./cmd/agentteam-gateway-server \
  && CGO_ENABLED=0 GOOS="${TARGETOS}" GOARCH="${TARGETARCH}" go build -trimpath -o /out/bin/agentteam-schema ./cmd/agentteam-schema \
  && CGO_ENABLED=0 GOOS="${TARGETOS}" GOARCH="${TARGETARCH}" go build -trimpath -o /out/bin/agentteam-tidb-admin ./cmd/agentteam-tidb-admin

FROM debian:bookworm-slim

ARG DEBIAN_MIRROR=http://deb.debian.org/debian
ARG DEBIAN_SECURITY_MIRROR=http://deb.debian.org/debian-security
RUN sed -i "s|http://deb.debian.org/debian-security|${DEBIAN_SECURITY_MIRROR}|g; s|http://deb.debian.org/debian|${DEBIAN_MIRROR}|g" /etc/apt/sources.list.d/debian.sources \
  && apt-get update \
  && apt-get install -y --no-install-recommends ca-certificates tzdata git \
  && test -x "$(git --exec-path)/git-http-backend" \
  && rm -rf /var/lib/apt/lists/*

WORKDIR /app
COPY --from=build /out/bin/ /app/bin/
RUN mkdir -p /data/archive /data/secrets /data/meshx/ags-repos /data/meshx/content-store /data/meshx/automation-runner /data/meshx/source-mirrors /data/meshx/public-repo-cache /data/meshx/automation-blobs \
  && chown -R 65532:65532 /data

ENV AGENTTEAM_ARCHIVE_FILESYSTEM_ROOT=/data/archive \
	AGENTTEAM_ORG_CREDENTIALS_KEY_FILE=/data/secrets/org_credentials_master_key \
	MESHX_AGS_GIT_REPO_DIR=/data/meshx/ags-repos \
	MESHX_CONTENT_STORE_ENABLED=false \
	MESHX_CONTENT_STORE_FILESYSTEM_ROOT=/data/meshx/content-store \
	MESHX_AUTOMATION_SERVER_RUNNER_WORKDIR=/data/meshx/automation-runner \
	MESHX_KB_SOURCE_MIRROR_WORK_DIR=/data/meshx/source-mirrors \
	MESHX_KB_PUBLIC_REPO_CACHE_DIR=/data/meshx/public-repo-cache \
	MESHX_AUTOMATION_BLOB_FILESYSTEM_ROOT=/data/meshx/automation-blobs
VOLUME ["/data"]

USER 65532:65532
EXPOSE 3001

CMD ["/app/bin/agentteam-server"]
