We are copying from builder layer before downloading files which are mostly unchanged. This means we are not using layer cache.
63 lines
3.2 KiB
Docker
63 lines
3.2 KiB
Docker
ARG BUILDER_CACHE_TARGET=193044292705.dkr.ecr.ap-south-1.amazonaws.com/common/spring-boot-maven:1.0
|
|
|
|
FROM 193044292705.dkr.ecr.ap-south-1.amazonaws.com/common/golang:1.21.1 as golang_builder
|
|
WORKDIR /app
|
|
COPY ./kutegen/go.mod ./kutegen/go.sum ./
|
|
RUN go mod download
|
|
COPY ./kutegen ./
|
|
RUN CGO_ENABLED=0 go build -o kutegen cmd/main.go
|
|
|
|
FROM ${BUILDER_CACHE_TARGET} as builder
|
|
ARG ARTIFACT_VERSION=0.0.1-SNAPSHOT
|
|
RUN rm -rf /build && mkdir -p /build
|
|
WORKDIR /build
|
|
COPY src /build/src
|
|
COPY pom.xml /build
|
|
COPY entrypoint.sh /build/entrypoint.sh
|
|
RUN wget -O elastic-apm.jar https://repo1.maven.org/maven2/co/elastic/apm/elastic-apm-agent/1.42.0/elastic-apm-agent-1.42.0.jar
|
|
RUN mvn -Dhttps.protocols=TLSv1.2 -B dependency:resolve dependency:resolve-plugins
|
|
RUN mvn clean verify -DskipTests -Dartifact.version=${ARTIFACT_VERSION}
|
|
|
|
FROM 193044292705.dkr.ecr.ap-south-1.amazonaws.com/common/secure-navi-openjdk:11.0.5-jre-slim-20231026-root
|
|
ARG ARTIFACT_VERSION=0.0.1-SNAPSHOT
|
|
RUN mkdir -p /usr/local
|
|
WORKDIR /usr/local/
|
|
COPY --from=golang_builder /app/kutegen /usr/local/bin/kutegen
|
|
RUN apt-get update && \
|
|
apt-get install telnet curl dnsutils kafkacat unzip python3 python3-pip python3-dev python3-venv -y && \
|
|
adduser --system --uid 4000 --disabled-password non-root-user && \
|
|
chown -R 4000:4000 /usr/local && chmod -R g+w /usr/local
|
|
|
|
ENV KUBECTL_VERSION=1.24.17
|
|
ADD https://storage.googleapis.com/kubernetes-release/release/v${KUBECTL_VERSION}/bin/linux/amd64/kubectl /usr/local/bin/kubectl
|
|
RUN chmod +x /usr/local/bin/kubectl && mkdir -p /home/non-root-user/.kube/
|
|
RUN chown -R non-root-user /home/non-root-user/.kube
|
|
|
|
ENV AWS_AUTHENTICATOR=0.6.11
|
|
RUN curl -LO https://github.com/kubernetes-sigs/aws-iam-authenticator/releases/download/v${AWS_AUTHENTICATOR}/aws-iam-authenticator_${AWS_AUTHENTICATOR}_linux_amd64 && \
|
|
mv aws-iam-authenticator_${AWS_AUTHENTICATOR}_linux_amd64 /usr/local/bin/aws-iam-authenticator && chmod +x /usr/local/bin/aws-iam-authenticator
|
|
|
|
ENV OCI_VERSION=3.44.3
|
|
RUN python3 -m venv /opt/ocli-venv \
|
|
&& /opt/ocli-venv/bin/pip install --upgrade pip \
|
|
&& curl -L -o oci-cli-3.44.3.zip https://github.com/oracle/oci-cli/releases/download/v${OCI_VERSION}/oci-cli-${OCI_VERSION}.zip \
|
|
&& unzip oci-cli-${OCI_VERSION}.zip \
|
|
&& cd oci-cli \
|
|
&& /opt/ocli-venv/bin/pip install oci_cli-${OCI_VERSION}-py3-none-any.whl \
|
|
&& cp /opt/ocli-venv/bin/oci /usr/local/bin/oci \
|
|
&& rm -rf oci-cli-${OCI_VERSION}.zip \
|
|
&& cd .. && rm -rf oci-cli
|
|
|
|
RUN curl -LO https://github.com/argoproj/argo-rollouts/releases/download/v1.2.2/kubectl-argo-rollouts-linux-amd64
|
|
RUN chmod +x ./kubectl-argo-rollouts-linux-amd64 && cp ./kubectl-argo-rollouts-linux-amd64 /usr/local/bin/kubectl-argo-rollouts
|
|
|
|
COPY --from=builder /build/elastic-apm.jar /usr/local/elastic-apm.jar
|
|
COPY --from=builder /build/src/main/resources/elasticapm.properties /usr/local/elasticapm.properties
|
|
COPY --from=builder /build/target/deployment-portal-backend-${ARTIFACT_VERSION}.jar /usr/local/deployment-portal-backend.jar
|
|
COPY --from=builder /build/entrypoint.sh /usr/local/entrypoint.sh
|
|
|
|
ENTRYPOINT ["/usr/local/entrypoint.sh"]
|
|
|
|
USER 4000
|
|
CMD ["sh", "-c", "java ${JVM_OPTS} -jar /usr/local/deployment-portal-backend.jar"]
|