Skip to content

Commit

Permalink
Merge pull request #3515 from percona/PMM-13626-install-perl-into-pmm…
Browse files Browse the repository at this point in the history
…-client

PMM 13626 install perl into pmm client
  • Loading branch information
talhabinrizwan authored Mar 11, 2025
2 parents 2a5099f + a6e315f commit e393e27
Showing 1 changed file with 69 additions and 30 deletions.
99 changes: 69 additions & 30 deletions build/docker/client/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,12 +1,37 @@
FROM redhat/ubi9-minimal AS users
FROM redhat/ubi9 AS builder

RUN microdnf install shadow-utils jq tar -y
RUN dnf install -y shadow-utils jq tar https://repo.percona.com/yum/percona-release-latest.noarch.rpm \
&& percona-release enable ps-80 \
&& dnf install -y percona-server-client

# Install required dependencies into the installation root
RUN dnf install -y \
perl-core \
perl-DBD-MySQL \
perl-DBI \
perl-Digest-MD5 \
perl-English \
perl-FindBin \
perl-IO-Socket-SSL \
perl-Sys-Hostname \
perl-TermReadKey \
perl-Time-HiRes \
perl-sigtrap \
&& rm -rf /var/cache/*

RUN ls -R /usr/bin

RUN groupadd -g 1002 pmm-agent && \
useradd -u 1002 -r -g pmm-agent -s /sbin/nologin \
-d /usr/local/percona/pmm \
-c "PMM Client User" pmm-agent

ADD pmm-client.tar.gz /tmp/
RUN cd /tmp/pmm-client* \
&& env PMM_USER=pmm-agent PMM_GROUP=root ./install_tarball \
&& cd /tmp \
&& rm -rf /tmp/pmm-client*

FROM redhat/ubi9-micro

ARG VERSION
Expand All @@ -31,39 +56,53 @@ LABEL build-date=${BUILD_DATE} \
maintainer="Percona, LLC"

COPY LICENSE /licenses/
COPY --from=users --chown=0:0 /etc/passwd /etc/passwd
COPY --from=users --chown=0:0 /etc/group /etc/group
COPY --from=builder --chown=0:0 /etc/passwd /etc/passwd
COPY --from=builder --chown=0:0 /etc/group /etc/group

# Install jq along with its dependencies
COPY --from=users --chown=0:0 /usr/bin/jq /usr/bin/
COPY --from=users --chown=0:0 /usr/bin/tar /usr/bin/
COPY --from=users --chown=0:0 /usr/bin/curl /usr/bin/

COPY --from=users --chown=0:0 /usr/lib64/libjq.so.1.0.4 /lib64/libjq.so.1
COPY --from=users --chown=0:0 /usr/lib64/libonig.so.5.1.0 /lib64/libonig.so.5

# Dependencies of curl
COPY --from=users --chown=0:0 /usr/lib64/libkeyutils.so* /lib64/
COPY --from=users --chown=0:0 /usr/lib64/libz.so* /lib64/
COPY --from=users --chown=0:0 /usr/lib64/libkrb5support.so* /lib64/
COPY --from=users --chown=0:0 /usr/lib64/libkrb5.so* /lib64/
COPY --from=users --chown=0:0 /usr/lib64/libk5crypto.so* /lib64/
COPY --from=users --chown=0:0 /usr/lib64/libgssapi_krb5.so* /lib64/
COPY --from=users --chown=0:0 /usr/lib64/libcom_err.so* /lib64/
COPY --from=users --chown=0:0 /usr/lib64/libssl.so* /lib64/
COPY --from=users --chown=0:0 /usr/lib64/libcrypto.so* /lib64/
COPY --from=users --chown=0:0 /usr/lib64/libcurl.so* /lib64/
COPY --from=users --chown=0:0 /usr/lib64/libnghttp2.so* /lib64/
COPY --from=users --chown=0:0 /usr/lib64/libresolv.so* /lib64/
COPY --from=builder --chown=0:0 /usr/bin/jq /usr/bin/
COPY --from=builder --chown=0:0 /usr/bin/tar /usr/bin/
COPY --from=builder --chown=0:0 /usr/bin/curl /usr/bin/
COPY --from=builder --chown=0:0 /usr/bin/sed /usr/bin/
COPY --from=builder --chown=0:0 /usr/bin/grep /usr/bin/
COPY --from=builder --chown=0:0 /usr/bin/awk /usr/bin/

RUN install -d -o pmm-agent -g pmm-agent -m 0775 /usr/local/percona/pmm
COPY --from=builder --chown=0:0 /usr/lib64/libjq.so.1 /usr/lib64/
COPY --from=builder --chown=0:0 /usr/lib64/libonig.so.5 /usr/lib64/

ADD pmm-client.tar.gz /tmp/
# Install perl along with its dependencies
COPY --from=builder --chown=0:0 /usr/bin/mysql* /usr/bin/
COPY --from=builder --chown=0:0 /usr/bin/perl* /usr/bin/
COPY --from=builder --chown=0:0 /usr/lib64/*perl* /usr/lib64/
COPY --from=builder --chown=0:0 /usr/share/perl5 /usr/share/perl5
COPY --from=builder --chown=0:0 /usr/lib64/libcrypt.so* /usr/lib64/
COPY --from=builder --chown=0:0 /usr/lib64/libstdc++.so* /usr/lib64/
COPY --from=builder --chown=0:0 /usr/lib64/libreadline.so* /usr/lib64/
COPY --from=builder --chown=0:0 /etc/ld.so.conf.d/mysql-x86_64.conf /etc/ld.so.conf.d

RUN cd /tmp/pmm-client-* \
&& env PMM_USER=pmm-agent PMM_GROUP=root ./install_tarball \
&& cd /tmp \
&& rm -rf /tmp/pmm-client*
# Install dependencies of curl
COPY --from=builder --chown=0:0 /usr/lib64/libkeyutils.so* /usr/lib64/
COPY --from=builder --chown=0:0 /usr/lib64/libz.so* /usr/lib64/
COPY --from=builder --chown=0:0 /usr/lib64/libkrb5support.so* /usr/lib64/
COPY --from=builder --chown=0:0 /usr/lib64/libkrb5.so* /usr/lib64/
COPY --from=builder --chown=0:0 /usr/lib64/libk5crypto.so* /usr/lib64/
COPY --from=builder --chown=0:0 /usr/lib64/libgssapi_krb5.so* /usr/lib64/
COPY --from=builder --chown=0:0 /usr/lib64/libcom_err.so* /usr/lib64/
COPY --from=builder --chown=0:0 /usr/lib64/libssl.so* /usr/lib64/
COPY --from=builder --chown=0:0 /usr/lib64/libcrypto.so* /usr/lib64/
COPY --from=builder --chown=0:0 /usr/lib64/libcurl.so* /usr/lib64/
COPY --from=builder --chown=0:0 /usr/lib64/libnghttp2.so* /usr/lib64/
COPY --from=builder --chown=0:0 /usr/lib64/libresolv.so* /usr/lib64/

# Install dependencies of grep and awk
COPY --from=builder --chown=0:0 /lib64/libpcre.so.1 /usr/lib64/
COPY --from=builder --chown=0:0 /lib64/libsigsegv.so.2 /usr/lib64/
COPY --from=builder --chown=0:0 /lib64/libgmp.so.10 /usr/lib64/
COPY --from=builder --chown=0:0 /lib64/libmpfr.so.6 /usr/lib64/

# Install pmm-client
RUN install -d -o pmm-agent -g pmm-agent -m 0775 /usr/local/percona/pmm
COPY --from=builder /usr/local/percona/pmm /usr/local/percona/pmm/

USER pmm-agent
WORKDIR /usr/local/percona/pmm/
Expand Down

0 comments on commit e393e27

Please sign in to comment.