53 lines
1.9 KiB
Docker
53 lines
1.9 KiB
Docker
ARG SERVERCORE_VERSION
|
|
ARG ARCH=amd64
|
|
ARG VERSION=dev
|
|
|
|
FROM library/golang:1.22 as build
|
|
|
|
WORKDIR C:/app
|
|
COPY . .
|
|
ENV CGO_ENABLED=0
|
|
ENV GOOS="windows"
|
|
ENV GOARCH="amd64"
|
|
ENV TAGS="k8s"
|
|
ENV LINKFLAGS="-s -w -extldflags -static"
|
|
ENV LDFLAGS="-X main.VERSION={0} $LINKFLAGS -f $VERSION"
|
|
RUN go build -tags "${TAGS}" -ldflags "${LDFLAGS}" -o agent.exe ./cmd/agent
|
|
|
|
FROM mcr.microsoft.com/windows/servercore:${SERVERCORE_VERSION} AS builder
|
|
SHELL ["powershell", "-NoLogo", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]
|
|
# download wins
|
|
RUN $URL = 'https://github.com/rancher/wins/releases/download/v0.4.17/wins.exe'; \
|
|
\
|
|
Write-Host ('Downloading Wins from {0} ...' -f $URL); \
|
|
curl.exe -sfL $URL -o c:\wins.exe; \
|
|
\
|
|
Write-Host 'Complete.'
|
|
# download kubelet
|
|
RUN $URL = 'https://dl.k8s.io/v1.25.12/kubernetes-client-windows-amd64.tar.gz'; \
|
|
Write-Host ('Downloading Kubernetes from {0} ...' -f $URL); \
|
|
curl.exe -sfL $URL -o c:\kubernetes.tar.gz; \
|
|
\
|
|
Write-Host 'Expanding ...'; \
|
|
tar.exe -xzvf c:\kubernetes.tar.gz; \
|
|
\
|
|
Write-Host 'Complete.'
|
|
# Need to support loglevel & kube-prompt
|
|
# Move for PATH to work
|
|
RUN Copy-Item -Path /wins.exe -Destination /Windows/
|
|
RUN Copy-Item -Path /kubernetes/client/bin/kubectl.exe -Destination /Windows/
|
|
|
|
ARG VERSION=${VERSION}
|
|
|
|
LABEL io.cattle.agent true
|
|
ENV DOCKER_API_VERSION 1.24
|
|
ENV AGENT_IMAGE rancher/rancher-agent:${VERSION}
|
|
ENV SSL_CERT_DIR C:\\etc\\kubernetes\\ssl\\certs
|
|
COPY --from=build C:/app/agent.exe /etc/rancher/
|
|
COPY --from=build C:/app/package/windows/agent.ps1 /etc/rancher/
|
|
COPY --from=build C:/app/package/windows/bootstrap.ps1 /etc/rancher/
|
|
COPY --from=build C:/app/package/windows/entrypoint.ps1 /etc/rancher/
|
|
COPY --from=build C:/app/package/windows/execute.ps1 /etc/rancher/
|
|
COPY --from=build C:/app/package/windows/utils.psm1 /etc/rancher/
|
|
ENTRYPOINT ["powershell", "-NoLogo", "-NonInteractive", "-File", "c:/etc/rancher/entrypoint.ps1"]
|