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