mirror of
https://github.com/argoproj/argo-cd
synced 2026-05-24 09:50:08 +00:00
83 lines
3 KiB
Text
83 lines
3 KiB
Text
FROM debian:9.3 as builder
|
|
|
|
RUN apt-get update && apt-get install -y \
|
|
git \
|
|
make \
|
|
wget \
|
|
gcc \
|
|
zip && \
|
|
apt-get clean && \
|
|
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
|
|
|
# Install go
|
|
ENV GO_VERSION 1.9.3
|
|
ENV GO_ARCH amd64
|
|
ENV GOPATH /root/go
|
|
ENV PATH ${GOPATH}/bin:/usr/local/go/bin:${PATH}
|
|
RUN wget https://storage.googleapis.com/golang/go${GO_VERSION}.linux-${GO_ARCH}.tar.gz && \
|
|
tar -C /usr/local/ -xf /go${GO_VERSION}.linux-${GO_ARCH}.tar.gz && \
|
|
rm /go${GO_VERSION}.linux-${GO_ARCH}.tar.gz
|
|
|
|
# Install protoc, dep, packr
|
|
ENV PROTOBUF_VERSION 3.5.1
|
|
RUN cd /usr/local && \
|
|
wget https://github.com/google/protobuf/releases/download/v${PROTOBUF_VERSION}/protoc-${PROTOBUF_VERSION}-linux-x86_64.zip && \
|
|
unzip protoc-*.zip && \
|
|
wget https://github.com/golang/dep/releases/download/v0.4.1/dep-linux-amd64 -O /usr/local/bin/dep && \
|
|
chmod +x /usr/local/bin/dep && \
|
|
wget https://github.com/gobuffalo/packr/releases/download/v1.10.4/packr_1.10.4_linux_amd64.tar.gz && \
|
|
tar -vxf packr*.tar.gz -C /tmp/ && \
|
|
mv /tmp/packr /usr/local/bin/packr
|
|
|
|
# A dummy directory is created under $GOPATH/src/dummy so we are able to use dep
|
|
# to install all the packages of our dep lock file
|
|
COPY Gopkg.toml ${GOPATH}/src/dummy/Gopkg.toml
|
|
COPY Gopkg.lock ${GOPATH}/src/dummy/Gopkg.lock
|
|
|
|
RUN cd ${GOPATH}/src/dummy && \
|
|
dep ensure -vendor-only && \
|
|
mv vendor/* ${GOPATH}/src/ && \
|
|
rmdir vendor
|
|
|
|
# Perform the build
|
|
WORKDIR /root/go/src/github.com/argoproj/argo-cd
|
|
COPY . .
|
|
ARG MAKE_TARGET="cli server controller repo-server argocd-util"
|
|
RUN make ${MAKE_TARGET}
|
|
|
|
|
|
##############################################################
|
|
# This stage will pull in or build any CLI tooling we need for our final image
|
|
|
|
FROM golang:1.10 as cli-tooling
|
|
|
|
# NOTE: we frequently switch between tip of master ksonnet vs. official builds. Comment/uncomment
|
|
# the corresponding section to switch between the two options:
|
|
|
|
# Option 1: build ksonnet ourselves
|
|
#RUN go get -v -u github.com/ksonnet/ksonnet && mv ${GOPATH}/bin/ksonnet /ks
|
|
|
|
# Option 2: use official tagged ksonnet release
|
|
env KSONNET_VERSION=0.10.2
|
|
RUN wget https://github.com/ksonnet/ksonnet/releases/download/v${KSONNET_VERSION}/ks_${KSONNET_VERSION}_linux_amd64.tar.gz && \
|
|
tar -C /tmp/ -xf ks_${KSONNET_VERSION}_linux_amd64.tar.gz && \
|
|
mv /tmp/ks_${KSONNET_VERSION}_linux_amd64/ks /ks
|
|
|
|
RUN curl -o /kubectl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl && \
|
|
chmod +x /kubectl
|
|
|
|
|
|
##############################################################
|
|
FROM debian:9.3
|
|
RUN apt-get update && apt-get install -y git && \
|
|
apt-get clean && \
|
|
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
|
|
|
COPY --from=cli-tooling /ks /usr/local/bin/ks
|
|
COPY --from=cli-tooling /kubectl /usr/local/bin/kubectl
|
|
# workaround ksonnet issue https://github.com/ksonnet/ksonnet/issues/298
|
|
ENV USER=root
|
|
|
|
COPY --from=builder /root/go/src/github.com/argoproj/argo-cd/dist/* /
|
|
ARG BINARY
|
|
CMD /${BINARY}
|