Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

PMM 13626 install perl into pmm client #3515

Open
wants to merge 7 commits into
base: v3
Choose a base branch
from
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
Loading