github.com/argoproj/argo-cd/v3@v3.2.1/Dockerfile (about) 1 ARG BASE_IMAGE=docker.io/library/ubuntu:25.04@sha256:10bb10bb062de665d4dc3e0ea36715270ead632cfcb74d08ca2273712a0dfb42 2 #################################################################################################### 3 # Builder image 4 # Initial stage which pulls prepares build dependencies and CLI tooling we need for our final image 5 # Also used as the image in CI jobs so needs all dependencies 6 #################################################################################################### 7 FROM docker.io/library/golang:1.25.0@sha256:9e56f0d0f043a68bb8c47c819e47dc29f6e8f5129b8885bed9d43f058f7f3ed6 AS builder 8 9 WORKDIR /tmp 10 11 RUN echo 'deb http://archive.debian.org/debian buster-backports main' >> /etc/apt/sources.list 12 13 RUN apt-get update && apt-get install --no-install-recommends -y \ 14 openssh-server \ 15 nginx \ 16 unzip \ 17 fcgiwrap \ 18 git \ 19 git-lfs \ 20 make \ 21 wget \ 22 gcc \ 23 sudo \ 24 zip && \ 25 apt-get clean && \ 26 rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* 27 28 COPY hack/install.sh hack/tool-versions.sh ./ 29 COPY hack/installers installers 30 31 RUN ./install.sh helm && \ 32 INSTALL_PATH=/usr/local/bin ./install.sh kustomize 33 34 #################################################################################################### 35 # Argo CD Base - used as the base for both the release and dev argocd images 36 #################################################################################################### 37 FROM $BASE_IMAGE AS argocd-base 38 39 LABEL org.opencontainers.image.source="https://github.com/argoproj/argo-cd" 40 41 USER root 42 43 ENV ARGOCD_USER_ID=999 \ 44 DEBIAN_FRONTEND=noninteractive 45 46 RUN groupadd -g $ARGOCD_USER_ID argocd && \ 47 useradd -r -u $ARGOCD_USER_ID -g argocd argocd && \ 48 mkdir -p /home/argocd && \ 49 chown argocd:0 /home/argocd && \ 50 chmod g=u /home/argocd && \ 51 apt-get update && \ 52 apt-get dist-upgrade -y && \ 53 apt-get install -y \ 54 git git-lfs tini gpg tzdata connect-proxy && \ 55 apt-get clean && \ 56 rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* 57 58 COPY hack/gpg-wrapper.sh \ 59 hack/git-verify-wrapper.sh \ 60 entrypoint.sh \ 61 /usr/local/bin/ 62 COPY --from=builder /usr/local/bin/helm /usr/local/bin/helm 63 COPY --from=builder /usr/local/bin/kustomize /usr/local/bin/kustomize 64 65 # keep uid_entrypoint.sh for backward compatibility 66 RUN ln -s /usr/local/bin/entrypoint.sh /usr/local/bin/uid_entrypoint.sh 67 68 # support for mounting configuration from a configmap 69 WORKDIR /app/config/ssh 70 RUN touch ssh_known_hosts && \ 71 ln -s /app/config/ssh/ssh_known_hosts /etc/ssh/ssh_known_hosts 72 73 WORKDIR /app/config 74 RUN mkdir -p tls && \ 75 mkdir -p gpg/source && \ 76 mkdir -p gpg/keys && \ 77 chown argocd gpg/keys && \ 78 chmod 0700 gpg/keys 79 80 ENV USER=argocd 81 82 USER $ARGOCD_USER_ID 83 WORKDIR /home/argocd 84 85 #################################################################################################### 86 # Argo CD UI stage 87 #################################################################################################### 88 FROM --platform=$BUILDPLATFORM docker.io/library/node:23.0.0@sha256:e643c0b70dca9704dff42e12b17f5b719dbe4f95e6392fc2dfa0c5f02ea8044d AS argocd-ui 89 90 WORKDIR /src 91 COPY ["ui/package.json", "ui/yarn.lock", "./"] 92 93 RUN yarn install --network-timeout 200000 && \ 94 yarn cache clean 95 96 COPY ["ui/", "."] 97 98 ARG ARGO_VERSION=latest 99 ENV ARGO_VERSION=$ARGO_VERSION 100 ARG TARGETARCH 101 RUN HOST_ARCH=$TARGETARCH NODE_ENV='production' NODE_ONLINE_ENV='online' NODE_OPTIONS=--max_old_space_size=8192 yarn build 102 103 #################################################################################################### 104 # Argo CD Build stage which performs the actual build of Argo CD binaries 105 #################################################################################################### 106 FROM --platform=$BUILDPLATFORM docker.io/library/golang:1.25.0@sha256:9e56f0d0f043a68bb8c47c819e47dc29f6e8f5129b8885bed9d43f058f7f3ed6 AS argocd-build 107 108 WORKDIR /go/src/github.com/argoproj/argo-cd 109 110 COPY go.* ./ 111 RUN go mod download 112 113 # Perform the build 114 COPY . . 115 COPY --from=argocd-ui /src/dist/app /go/src/github.com/argoproj/argo-cd/ui/dist/app 116 ARG TARGETOS \ 117 TARGETARCH 118 # These build args are optional; if not specified the defaults will be taken from the Makefile 119 ARG GIT_TAG \ 120 BUILD_DATE \ 121 GIT_TREE_STATE \ 122 GIT_COMMIT 123 RUN GIT_COMMIT=$GIT_COMMIT \ 124 GIT_TREE_STATE=$GIT_TREE_STATE \ 125 GIT_TAG=$GIT_TAG \ 126 BUILD_DATE=$BUILD_DATE \ 127 GOOS=$TARGETOS \ 128 GOARCH=$TARGETARCH \ 129 make argocd-all 130 131 #################################################################################################### 132 # Final image 133 #################################################################################################### 134 FROM argocd-base 135 ENTRYPOINT ["/usr/bin/tini", "--"] 136 COPY --from=argocd-build /go/src/github.com/argoproj/argo-cd/dist/argocd* /usr/local/bin/ 137 138 USER root 139 RUN ln -s /usr/local/bin/argocd /usr/local/bin/argocd-server && \ 140 ln -s /usr/local/bin/argocd /usr/local/bin/argocd-repo-server && \ 141 ln -s /usr/local/bin/argocd /usr/local/bin/argocd-cmp-server && \ 142 ln -s /usr/local/bin/argocd /usr/local/bin/argocd-application-controller && \ 143 ln -s /usr/local/bin/argocd /usr/local/bin/argocd-dex && \ 144 ln -s /usr/local/bin/argocd /usr/local/bin/argocd-notifications && \ 145 ln -s /usr/local/bin/argocd /usr/local/bin/argocd-applicationset-controller && \ 146 ln -s /usr/local/bin/argocd /usr/local/bin/argocd-k8s-auth && \ 147 ln -s /usr/local/bin/argocd /usr/local/bin/argocd-commit-server 148 149 USER $ARGOCD_USER_ID