Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
a96359f
Migrate replicator images to UBI9 micro multi-stage build
KrishVora01 Feb 17, 2026
cb95215
Add trailing slashes to COPY paths in replicator-executable Dockerfile
KrishVora01 Feb 17, 2026
a11f7df
temp: use micro base image tag for CI validation
KrishVora01 Feb 17, 2026
859999d
revert: restore default DOCKER_UPSTREAM_TAG to ubi9-latest
KrishVora01 Feb 17, 2026
6d31882
temp: override CI to use dev registry micro base images
KrishVora01 Feb 17, 2026
0f95ba3
Revert "temp: override CI to use dev registry micro base images"
KrishVora01 Feb 17, 2026
9a5b7be
Consolidate COPY --from=builder into single RUN --mount layer for cp-…
KrishVora01 Feb 22, 2026
ab42cee
Replace RUN --mount with multi-source COPY for dockerfile-maven-plugi…
KrishVora01 Feb 22, 2026
fa557c0
Revert COPY --chown to COPY + RUN chown for Spotify plugin compatibility
KrishVora01 Feb 22, 2026
c3d7923
temp: override CI to use dev registry micro base images
KrishVora01 Feb 23, 2026
000e3db
Revert "temp: override CI to use dev registry micro base images"
KrishVora01 Feb 23, 2026
5a3b851
temp: override CI to use dev registry micro base images
KrishVora01 Feb 26, 2026
ce1b20c
Revert "temp: override CI to use dev registry micro base images"
KrishVora01 Feb 26, 2026
7513f74
temp: override CI to use dev registry micro base images
KrishVora01 Feb 26, 2026
71973c7
Force push empty commit to retrigger CI build again
KrishVora01 Feb 26, 2026
88ebe7c
Merge remote-tracking branch 'origin/master' into micro-migration-ubi9
KrishVora01 Feb 26, 2026
b23830c
revert: restore default upstream registry and tag
KrishVora01 Feb 26, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions .semaphore/semaphore.yml
Original file line number Diff line number Diff line change
Expand Up @@ -121,8 +121,8 @@ blocks:
- ci-tools ci-update-version --direct-pom-edit
- export OS_PACKAGES_URL=$(echo "$PACKAGES_URL" | sed "s/PACKAGE_TYPE/rpm/g")
- export PACKAGING_BUILD_ARGS="$PACKAGING_BUILD_ARGS -DCONFLUENT_PACKAGES_REPO=$OS_PACKAGES_URL"
- mvn -Dmaven.wagon.http.retryHandler.count=3 --batch-mode -P jenkins,docker clean package dependency:analyze validate -U -Ddocker.registry=$DOCKER_DEV_REGISTRY
-Ddocker.upstream-registry=$DOCKER_UPSTREAM_REGISTRY -DBUILD_NUMBER=$BUILD_NUMBER -DGIT_COMMIT=$GIT_COMMIT -Ddocker.tag=$DOCKER_DEV_TAG$OS_TAG$AMD_ARCH
- mvn -Dmaven.wagon.http.retryHandler.count=3 --batch-mode -P jenkins,docker clean package dependency:analyze validate -U -Ddocker.registry=$DOCKER_DEV_REGISTRY
-Ddocker.upstream-registry=$DOCKER_UPSTREAM_REGISTRY -DBUILD_NUMBER=$BUILD_NUMBER -DGIT_COMMIT=$GIT_COMMIT -Ddocker.tag=$DOCKER_DEV_TAG$OS_TAG$AMD_ARCH
-Ddocker.upstream-tag=$DOCKER_UPSTREAM_TAG$OS_TAG -Darch.type=$AMD_ARCH -Ddocker.os_type=ubi9 $PACKAGING_BUILD_ARGS -Ddependency.check.skip=true $MAVEN_EXTRA_ARGS
- . cache-maven store
- >-
Expand Down Expand Up @@ -154,8 +154,8 @@ blocks:
- export OS_PACKAGES_URL=$(echo "$PACKAGES_URL" | sed "s/PACKAGE_TYPE/rpm/g")
- export PACKAGING_BUILD_ARGS="$PACKAGING_BUILD_ARGS -DCONFLUENT_PACKAGES_REPO=$OS_PACKAGES_URL"
- ci-tools ci-update-version --direct-pom-edit
- mvn -Dmaven.wagon.http.retryHandler.count=3 --batch-mode -P jenkins,docker clean package dependency:analyze validate -U -Ddocker.registry=$DOCKER_DEV_REGISTRY
-Ddocker.upstream-registry=$DOCKER_UPSTREAM_REGISTRY -DBUILD_NUMBER=$BUILD_NUMBER -DGIT_COMMIT=$GIT_COMMIT -Ddocker.tag=$DOCKER_DEV_TAG$OS_TAG$ARM_ARCH
- mvn -Dmaven.wagon.http.retryHandler.count=3 --batch-mode -P jenkins,docker clean package dependency:analyze validate -U -Ddocker.registry=$DOCKER_DEV_REGISTRY
-Ddocker.upstream-registry=$DOCKER_UPSTREAM_REGISTRY -DBUILD_NUMBER=$BUILD_NUMBER -DGIT_COMMIT=$GIT_COMMIT -Ddocker.tag=$DOCKER_DEV_TAG$OS_TAG$ARM_ARCH
-Ddocker.upstream-tag=$DOCKER_UPSTREAM_TAG$OS_TAG -Darch.type=$ARM_ARCH -Ddocker.os_type=ubi9 $PACKAGING_BUILD_ARGS -Ddependency.check.skip=true $MAVEN_EXTRA_ARGS
- . cache-maven store
- for image in $ARM_DOCKER_DEV_FULL_IMAGES; do echo "Pushing $image" && docker push $image; done
Expand Down
7 changes: 4 additions & 3 deletions replicator-executable/Dockerfile.ubi9
Original file line number Diff line number Diff line change
Expand Up @@ -39,12 +39,13 @@ ENV COMPONENT=replicator

VOLUME ["/etc/${COMPONENT}/secrets"]

COPY --chown=appuser:appuser include/etc/confluent/docker /etc/confluent/docker
COPY include/etc/confluent/docker/ /etc/confluent/docker/

USER root

RUN chown appuser:appuser -R /etc/replicator /etc/kafka-connect-replicator
RUN chown -R ${APP_UID}:${APP_GID} /etc/confluent/docker \
&& chown -R ${APP_UID}:${APP_GID} /etc/replicator /etc/kafka-connect-replicator

USER appuser
USER ${APP_UID}

CMD ["/etc/confluent/docker/run"]
69 changes: 52 additions & 17 deletions replicator/Dockerfile.ubi9
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,49 @@

ARG DOCKER_UPSTREAM_REGISTRY
ARG DOCKER_UPSTREAM_TAG=ubi9-latest
ARG UBI9_VERSION

# Stage 1: Get package_dedupe tool from cp-server-connect-base
FROM ${DOCKER_UPSTREAM_REGISTRY}confluentinc/cp-server-connect-base:${DOCKER_UPSTREAM_TAG} AS tools

# Stage 2: Install packages using ubi9 with dnf to /microdir
FROM registry.access.redhat.com/ubi9:${UBI9_VERSION} AS builder

ARG BUILD_NUMBER=-1
ARG PROJECT_VERSION
ARG ARTIFACT_ID
ARG GIT_COMMIT
ARG CONFLUENT_VERSION
ARG CONFLUENT_PACKAGES_REPO
ARG CONFLUENT_PLATFORM_LABEL

RUN echo "===> Adding confluent repository...${CONFLUENT_PACKAGES_REPO}" \
&& rpm --import ${CONFLUENT_PACKAGES_REPO}/archive.key \
&& printf "[Confluent] \n\
name=Confluent repository \n\
baseurl=${CONFLUENT_PACKAGES_REPO}/ \n\
gpgcheck=1 \n\
gpgkey=${CONFLUENT_PACKAGES_REPO}/archive.key \n\
enabled=1 " > /etc/yum.repos.d/confluent.repo \
&& mkdir -p /microdir

COPY --from=tools /usr/bin/package_dedupe /usr/local/bin/package_dedupe

RUN echo "===> Installing packages to /microdir with dnf" \
&& dnf install -y --installroot=/microdir --releasever=9 --setopt=install_weak_deps=False --nodocs \
confluent-kafka-connect-replicator-${CONFLUENT_VERSION} \
&& echo "===> Deduping jars in /microdir ..." \
&& package_dedupe /microdir/usr/share/java \
&& echo "===> Cleaning up ..." \
&& dnf --installroot=/microdir clean all \
&& rm -rf /microdir/var/cache/* /microdir/var/log/dnf* /microdir/var/log/yum.* \
&& rm -rf /etc/yum.repos.d/confluent.repo \
&& echo "===> Removing user database files to preserve base image's appuser ..." \
&& rm -f /microdir/etc/passwd /microdir/etc/group /microdir/etc/shadow /microdir/etc/gshadow \
/microdir/etc/subuid /microdir/etc/subgid \
&& rm -rf /microdir/dev/* /microdir/proc/* /microdir/sys/*

# Stage 3: Final image inheriting from cp-server-connect-base
FROM ${DOCKER_UPSTREAM_REGISTRY}confluentinc/cp-server-connect-base:${DOCKER_UPSTREAM_TAG}

ARG PROJECT_VERSION
Expand All @@ -30,7 +72,7 @@ LABEL release=$PROJECT_VERSION
LABEL name=$ARTIFACT_ID
LABEL summary="Confluent Replicator allows you to easily and reliably replicate topics from one Apache Kafka® cluster to another."
LABEL io.confluent.docker=true
LABEL io.confluent.docker.git.id=$COMMIT_ID
LABEL io.confluent.docker.git.id=$GIT_COMMIT
ARG BUILD_NUMBER=-1
LABEL io.confluent.docker.build.number=$BUILD_NUMBER
LABEL io.confluent.docker.git.repo="confluentinc/kafka-replicator-images"
Expand All @@ -39,23 +81,16 @@ ARG CONFLUENT_VERSION

USER root

RUN echo "===> Installing Replicator ..." \
&& echo "===> Adding confluent repository...${CONFLUENT_PACKAGES_REPO}" \
&& rpm --import ${CONFLUENT_PACKAGES_REPO}/archive.key \
&& printf "[Confluent] \n\
name=Confluent repository \n\
baseurl=${CONFLUENT_PACKAGES_REPO}/ \n\
gpgcheck=1 \n\
gpgkey=${CONFLUENT_PACKAGES_REPO}/archive.key \n\
enabled=1 " > /etc/yum.repos.d/confluent.repo \
&& microdnf install -y \
confluent-kafka-connect-replicator-${CONFLUENT_VERSION} \
&& echo "===> Cleaning up ..." \
&& microdnf clean all \
&& rm -rf /tmp/* /etc/yum.repos.d/confluent.repo
# Consolidate /usr/bin/ COPYs into a single layer to reduce image layer count.
# RedHat certification check "LayerCountAcceptable" requires < 40 layers.
COPY --from=builder /microdir/usr/bin/replicator /microdir/usr/bin/replicator-verifier /usr/bin/
COPY --from=builder /microdir/usr/share/java /usr/share/java
COPY --from=builder /microdir/usr/share/doc /usr/share/doc
COPY --from=builder /microdir/etc/kafka-connect-replicator /etc/kafka-connect-replicator

COPY --chown=appuser:appuser include/etc/confluent/docker /etc/confluent/docker
COPY include/etc/confluent/docker/ /etc/confluent/docker/
RUN chown -R ${APP_UID}:${APP_GID} /etc/confluent/docker

USER appuser
USER ${APP_UID}

CMD ["/etc/confluent/docker/run"]
24 changes: 24 additions & 0 deletions replicator/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,30 @@
</execution>
</executions>
</plugin>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>dockerfile-maven-plugin</artifactId>
<configuration>
<buildArgs>
<UBI9_VERSION>${ubi9.image.version}</UBI9_VERSION>
</buildArgs>
</configuration>
</plugin>
<plugin>
<groupId>io.fabric8</groupId>
<artifactId>docker-maven-plugin</artifactId>
<configuration>
<images>
<image>
<build>
<args>
<UBI9_VERSION>${ubi9.image.version}</UBI9_VERSION>
</args>
</build>
</image>
</images>
</configuration>
</plugin>
</plugins>
</build>
</project>