Files
deployment-portal-be/Dockerfile

51 lines
2.6 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=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
COPY --from=golang_builder /app/kutegen /usr/local/bin/kutegen
RUN apt-get update && \
apt-get install telnet curl dnsutils kafkacat -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
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
ENTRYPOINT ["/usr/local/entrypoint.sh"]
USER 4000
CMD ["sh", "-c", "java ${JVM_OPTS} -jar /usr/local/deployment-portal-backend.jar"]