diff --git a/docker/datahub-gms/Dockerfile b/docker/datahub-gms/Dockerfile index ab3e0d764e..f26774c8e4 100644 --- a/docker/datahub-gms/Dockerfile +++ b/docker/datahub-gms/Dockerfile @@ -1,28 +1,30 @@ # Defining environment ARG APP_ENV=prod -FROM alpine:3 AS base +FROM golang:1-alpine3.17 AS binary ENV DOCKERIZE_VERSION v0.6.1 +WORKDIR /go/src/github.com/jwilder + +RUN apk --no-cache --update add openssl git tar curl + +WORKDIR /go/src/github.com/jwilder/dockerize + +RUN go install github.com/jwilder/dockerize@$DOCKERIZE_VERSION + +FROM alpine:3 AS base # Upgrade Alpine and base packages RUN apk --no-cache --update-cache --available upgrade \ - && if [ $(arch) = "aarch64" ]; then \ - DOCKERIZE_ARCH='aarch64';\ - elif [ $(arch) = "x86_64" ]; then \ - DOCKERIZE_ARCH='amd64'; \ - else \ - echo >&2 "Unsupported architecture $(arch)" ; exit 1; \ - fi \ - && apk --no-cache add tar curl bash coreutils gcompat \ + && apk --no-cache add curl bash coreutils gcompat \ && apk --no-cache add openjdk11-jre --repository=http://dl-cdn.alpinelinux.org/alpine/edge/community \ && curl -sS https://repo1.maven.org/maven2/org/eclipse/jetty/jetty-runner/9.4.46.v20220331/jetty-runner-9.4.46.v20220331.jar --output jetty-runner.jar \ && curl -sS https://repo1.maven.org/maven2/org/eclipse/jetty/jetty-jmx/9.4.46.v20220331/jetty-jmx-9.4.46.v20220331.jar --output jetty-jmx.jar \ && curl -sS https://repo1.maven.org/maven2/org/eclipse/jetty/jetty-util/9.4.46.v20220331/jetty-util-9.4.46.v20220331.jar --output jetty-util.jar \ && wget --no-verbose https://github.com/open-telemetry/opentelemetry-java-instrumentation/releases/download/v1.18.0/opentelemetry-javaagent.jar \ && wget --no-verbose https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/0.17.2/jmx_prometheus_javaagent-0.17.2.jar -O jmx_prometheus_javaagent.jar \ - && cp /usr/lib/jvm/java-11-openjdk/jre/lib/security/cacerts /tmp/kafka.client.truststore.jks \ - && curl -sS -L https://github.com/treff7es/dockerize/releases/download/$DOCKERIZE_VERSION/dockerize-linux-${DOCKERIZE_ARCH}-$DOCKERIZE_VERSION.tar.gz | tar -C /usr/local/bin -xzv + && cp /usr/lib/jvm/java-11-openjdk/jre/lib/security/cacerts /tmp/kafka.client.truststore.jks +COPY --from=binary /go/bin/dockerize /usr/local/bin FROM base as prod-install COPY war.war /datahub/datahub-gms/bin/war.war diff --git a/docker/datahub-mae-consumer/Dockerfile b/docker/datahub-mae-consumer/Dockerfile index 32a3bf2622..5ca3c8176d 100644 --- a/docker/datahub-mae-consumer/Dockerfile +++ b/docker/datahub-mae-consumer/Dockerfile @@ -1,25 +1,27 @@ # Defining environment ARG APP_ENV=prod -FROM alpine:3 AS base +FROM golang:1-alpine3.17 AS binary ENV DOCKERIZE_VERSION v0.6.1 +WORKDIR /go/src/github.com/jwilder + +RUN apk --no-cache --update add openssl git tar curl + +WORKDIR /go/src/github.com/jwilder/dockerize + +RUN go install github.com/jwilder/dockerize@$DOCKERIZE_VERSION + +FROM alpine:3 AS base # Upgrade Alpine and base packages RUN apk --no-cache --update-cache --available upgrade \ - && if [ $(arch) = "aarch64" ]; then \ - DOCKERIZE_ARCH='aarch64';\ - elif [ $(arch) = "x86_64" ]; then \ - DOCKERIZE_ARCH='amd64'; \ - else \ - echo >&2 "Unsupported architecture $(arch)" ; exit 1; \ - fi \ - && apk --no-cache add tar curl bash coreutils \ + && apk --no-cache add curl bash coreutils \ && apk --no-cache add openjdk11-jre --repository=http://dl-cdn.alpinelinux.org/alpine/edge/community \ && wget --no-verbose https://github.com/open-telemetry/opentelemetry-java-instrumentation/releases/download/v1.18.0/opentelemetry-javaagent.jar \ && wget --no-verbose https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/0.17.2/jmx_prometheus_javaagent-0.17.2.jar -O jmx_prometheus_javaagent.jar \ - && cp /usr/lib/jvm/java-11-openjdk/jre/lib/security/cacerts /tmp/kafka.client.truststore.jks \ - && curl -sSL https://github.com/treff7es/dockerize/releases/download/$DOCKERIZE_VERSION/dockerize-linux-${DOCKERIZE_ARCH}-$DOCKERIZE_VERSION.tar.gz | tar -C /usr/local/bin -xzv + && cp /usr/lib/jvm/java-11-openjdk/jre/lib/security/cacerts /tmp/kafka.client.truststore.jks +COPY --from=binary /go/bin/dockerize /usr/local/bin FROM base as prod-install COPY mae-consumer-job.jar /datahub/datahub-mae-consumer/bin/ diff --git a/docker/datahub-mce-consumer/Dockerfile b/docker/datahub-mce-consumer/Dockerfile index fca8430723..09ca7b9143 100644 --- a/docker/datahub-mce-consumer/Dockerfile +++ b/docker/datahub-mce-consumer/Dockerfile @@ -1,25 +1,27 @@ # Defining environment ARG APP_ENV=prod -FROM alpine:3 AS base +FROM golang:1-alpine3.17 AS binary ENV DOCKERIZE_VERSION v0.6.1 +WORKDIR /go/src/github.com/jwilder + +RUN apk --no-cache --update add openssl git tar curl + +WORKDIR /go/src/github.com/jwilder/dockerize + +RUN go install github.com/jwilder/dockerize@$DOCKERIZE_VERSION + +FROM alpine:3 AS base # Upgrade Alpine and base packages RUN apk --no-cache --update-cache --available upgrade \ - && if [ $(arch) = "aarch64" ]; then \ - DOCKERIZE_ARCH='aarch64';\ - elif [ $(arch) = "x86_64" ]; then \ - DOCKERIZE_ARCH='amd64'; \ - else \ - echo >&2 "Unsupported architecture $(arch)" ; exit 1; \ - fi \ - && apk --no-cache add tar curl bash \ + && apk --no-cache add curl bash \ && apk --no-cache add openjdk11-jre --repository=http://dl-cdn.alpinelinux.org/alpine/edge/community \ && wget --no-verbose https://github.com/open-telemetry/opentelemetry-java-instrumentation/releases/download/v1.18.0/opentelemetry-javaagent.jar \ && wget --no-verbose https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/0.17.2/jmx_prometheus_javaagent-0.17.2.jar -O jmx_prometheus_javaagent.jar \ - && cp /usr/lib/jvm/java-11-openjdk/jre/lib/security/cacerts /tmp/kafka.client.truststore.jks \ - && curl -sSL https://github.com/treff7es/dockerize/releases/download/$DOCKERIZE_VERSION/dockerize-linux-${DOCKERIZE_ARCH}-$DOCKERIZE_VERSION.tar.gz | tar -C /usr/local/bin -xzv + && cp /usr/lib/jvm/java-11-openjdk/jre/lib/security/cacerts /tmp/kafka.client.truststore.jks +COPY --from=binary /go/bin/dockerize /usr/local/bin FROM base as prod-install COPY mce-consumer-job.jar /datahub/datahub-mce-consumer/bin/ diff --git a/docker/datahub-upgrade/Dockerfile b/docker/datahub-upgrade/Dockerfile index d84028a109..2f5d7971bc 100644 --- a/docker/datahub-upgrade/Dockerfile +++ b/docker/datahub-upgrade/Dockerfile @@ -1,26 +1,30 @@ # Defining environment ARG APP_ENV=prod -FROM alpine:3 AS base +FROM golang:1-alpine3.17 AS binary + ENV DOCKERIZE_VERSION v0.6.1 +WORKDIR /go/src/github.com/jwilder + +RUN apk --no-cache --update add openssl git tar curl + +WORKDIR /go/src/github.com/jwilder/dockerize + +RUN go install github.com/jwilder/dockerize@$DOCKERIZE_VERSION + +FROM alpine:3 AS base + # Upgrade Alpine and base packages RUN apk --no-cache --update-cache --available upgrade \ - && if [ $(arch) = "aarch64" ]; then \ - DOCKERIZE_ARCH='aarch64';\ - elif [ $(arch) = "x86_64" ]; then \ - DOCKERIZE_ARCH='amd64'; \ - else \ - echo >&2 "Unsupported architecture $(arch)" ; exit 1; \ - fi \ - && apk --no-cache add tar curl bash coreutils gcompat \ + && apk --no-cache add curl bash coreutils gcompat \ && apk --no-cache add openjdk11-jre --repository=http://dl-cdn.alpinelinux.org/alpine/edge/community \ && curl -sS https://repo1.maven.org/maven2/org/eclipse/jetty/jetty-runner/9.4.46.v20220331/jetty-runner-9.4.46.v20220331.jar --output jetty-runner.jar \ && curl -sS https://repo1.maven.org/maven2/org/eclipse/jetty/jetty-jmx/9.4.46.v20220331/jetty-jmx-9.4.46.v20220331.jar --output jetty-jmx.jar \ && curl -sS https://repo1.maven.org/maven2/org/eclipse/jetty/jetty-util/9.4.46.v20220331/jetty-util-9.4.46.v20220331.jar --output jetty-util.jar \ && wget --no-verbose https://github.com/open-telemetry/opentelemetry-java-instrumentation/releases/download/v1.18.0/opentelemetry-javaagent.jar \ && wget --no-verbose https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/0.17.2/jmx_prometheus_javaagent-0.17.2.jar -O jmx_prometheus_javaagent.jar \ - && cp /usr/lib/jvm/java-11-openjdk/jre/lib/security/cacerts /tmp/kafka.client.truststore.jks \ - && curl -sSL https://github.com/treff7es/dockerize/releases/download/$DOCKERIZE_VERSION/dockerize-linux-${DOCKERIZE_ARCH}-$DOCKERIZE_VERSION.tar.gz | tar -C /usr/local/bin -xzv + && cp /usr/lib/jvm/java-11-openjdk/jre/lib/security/cacerts /tmp/kafka.client.truststore.jks +COPY --from=binary /go/bin/dockerize /usr/local/bin FROM base as prod-install COPY datahub-upgrade.jar /datahub/datahub-upgrade/bin/ diff --git a/docker/elasticsearch-setup/Dockerfile b/docker/elasticsearch-setup/Dockerfile index de04315d15..92a1af4970 100644 --- a/docker/elasticsearch-setup/Dockerfile +++ b/docker/elasticsearch-setup/Dockerfile @@ -3,7 +3,7 @@ # Defining environment ARG APP_ENV=prod -FROM golang:1.17-alpine3.15 AS binary +FROM golang:1-alpine3.17 AS binary ENV DOCKERIZE_VERSION v0.6.1 WORKDIR /go/src/github.com/jwilder @@ -15,7 +15,7 @@ WORKDIR /go/src/github.com/jwilder/dockerize RUN go install github.com/jwilder/dockerize@$DOCKERIZE_VERSION FROM alpine:3 AS base -RUN apk add --no-cache curl jq tar bash coreutils +RUN apk add --no-cache curl jq bash coreutils COPY --from=binary /go/bin/dockerize /usr/local/bin FROM base AS prod-install diff --git a/docker/mysql-setup/Dockerfile b/docker/mysql-setup/Dockerfile index 0808913599..90e9174e51 100644 --- a/docker/mysql-setup/Dockerfile +++ b/docker/mysql-setup/Dockerfile @@ -1,4 +1,4 @@ -FROM golang:1.17-alpine3.15 AS binary +FROM golang:1-alpine3.17 AS binary ENV DOCKERIZE_VERSION v0.6.1 WORKDIR /go/src/github.com/jwilder @@ -12,7 +12,7 @@ RUN go install github.com/jwilder/dockerize@$DOCKERIZE_VERSION FROM alpine:3 COPY --from=binary /go/bin/dockerize /usr/local/bin -RUN apk add --no-cache mysql-client curl tar bash +RUN apk add --no-cache mysql-client bash COPY docker/mysql-setup/init.sql /init.sql COPY docker/mysql-setup/init.sh /init.sh diff --git a/docker/postgres-setup/Dockerfile b/docker/postgres-setup/Dockerfile index a6049eacb5..15e6351537 100644 --- a/docker/postgres-setup/Dockerfile +++ b/docker/postgres-setup/Dockerfile @@ -1,8 +1,18 @@ -FROM alpine:3 +FROM golang:1-alpine3.17 AS binary ENV DOCKERIZE_VERSION v0.6.1 -RUN apk add --no-cache postgresql-client curl tar \ - && curl -sSL https://github.com/jwilder/dockerize/releases/download/$DOCKERIZE_VERSION/dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz | tar -C /usr/local/bin -xzv +WORKDIR /go/src/github.com/jwilder + +RUN apk --no-cache --update add openssl git tar curl + +WORKDIR /go/src/github.com/jwilder/dockerize + +RUN go install github.com/jwilder/dockerize@$DOCKERIZE_VERSION + +FROM alpine:3 + +RUN apk add --no-cache postgresql-client +COPY --from=binary /go/bin/dockerize /usr/local/bin COPY docker/postgres-setup/init.sql /init.sql COPY docker/postgres-setup/init.sh /init.sh diff --git a/docker/postgres-setup/build.gradle b/docker/postgres-setup/build.gradle new file mode 100644 index 0000000000..a5b0413ec4 --- /dev/null +++ b/docker/postgres-setup/build.gradle @@ -0,0 +1,42 @@ +plugins { + id 'com.palantir.docker' + id 'java' // required for versioning +} + +apply from: "../../gradle/versioning/versioning.gradle" + +ext { + docker_registry = rootProject.ext.docker_registry == 'linkedin' ? 'acryldata' : docker_registry + docker_repo = 'datahub-postgres-setup' + docker_dir = 'postgres-setup' +} + +docker { + name "${docker_registry}/${docker_repo}:v${version}" + version "v${version}" + dockerfile file("${rootProject.projectDir}/docker/${docker_dir}/Dockerfile") + files fileTree(rootProject.projectDir) { + include "docker/${docker_dir}/*" + } + tag("Debug", "${docker_registry}/${docker_repo}:debug") + + // platform('linux/arm64', 'linux/amd64') + buildx(true) + load(true) + push(false) +} +tasks.getByPath('docker').dependsOn('build') + +task mkdirBuildDocker { + doFirst { + mkdir "${project.buildDir}/docker" + } +} +dockerClean.finalizedBy(mkdirBuildDocker) + +task cleanLocalDockerImages { + doLast { + rootProject.ext.cleanLocalDockerImages(docker_registry, docker_repo, "v${version}") + } +} +dockerClean.finalizedBy(cleanLocalDockerImages) diff --git a/settings.gradle b/settings.gradle index 3846b110de..28a2fe4502 100644 --- a/settings.gradle +++ b/settings.gradle @@ -29,6 +29,7 @@ include 'metadata-jobs:mce-consumer-job' include ':docker' include ':docker:elasticsearch-setup' include ':docker:mysql-setup' +include ':docker:postgres-setup' include ':docker:kafka-setup' include 'metadata-models' include 'metadata-models-validator'