Skip to content

Commit

Permalink
Add dockerfile for PXC arm64 images
Browse files Browse the repository at this point in the history
  • Loading branch information
surbhat1595 committed Sep 23, 2024
1 parent ef94e49 commit c11988b
Showing 1 changed file with 180 additions and 0 deletions.
180 changes: 180 additions & 0 deletions percona-xtradb-cluster-8.0/Dockerfile.aarch64
Original file line number Diff line number Diff line change
@@ -0,0 +1,180 @@
FROM golang:1.22 AS go_builder

RUN git clone --branch=main https://github.com/percona/percona-xtradb-cluster-operator.git /go/src/github.com/percona/percona-xtradb-cluster-operator/
WORKDIR /go/src/github.com/percona/percona-xtradb-cluster-operator/cmd/peer-list
RUN go build

FROM redhat/ubi8-minimal

LABEL org.opencontainers.image.authors="[email protected]"

ENV PXC_VERSION 8.0.37-29.1
ENV PXC_REPO testing
ENV OS_VER el8
ENV FULL_PERCONA_XTRADBCLUSTER_VERSION "$PXC_VERSION.$OS_VER"
ENV PXC_TELEMETRY_VERSION 8.0.37-29-1

# Do not report during Docker image creation.
# Note that doing so, would create telemetry config file
# which would prevent reporting when new container is started.
# If we want to track Docker image creation as well,
# remove telemetry config file after installing packages!
ARG PERCONA_TELEMETRY_DISABLE=1

# check repository package signature in secure way
RUN set -ex; \
export GNUPGHOME="$(mktemp -d)"; \
gpg --batch --keyserver keyserver.ubuntu.com --recv-keys 76FD3DB13AB67410B89DB10E82562EA9AD986DA3 4D1BB29D63D98E422B2113B19334A25F8507EFA5 99DB70FAE1D7CE227FB6488205B555B38483C65D 94E279EB8D8F25B21810ADF121EA45AB2F86D6A1 5E9B8F5617B5066CE92057C3488FCF7C3ABB34F8; \
gpg --batch --export --armor 4D1BB29D63D98E422B2113B19334A25F8507EFA5 > ${GNUPGHOME}/PERCONA-PACKAGING-KEY; \
gpg --batch --export --armor 99DB70FAE1D7CE227FB6488205B555B38483C65D > ${GNUPGHOME}/RPM-GPG-KEY-centosofficial; \
gpg --batch --export --armor 94E279EB8D8F25B21810ADF121EA45AB2F86D6A1 > ${GNUPGHOME}/RPM-GPG-KEY-EPEL-8; \
gpg --batch --export --armor 5E9B8F5617B5066CE92057C3488FCF7C3ABB34F8 > ${GNUPGHOME}/RPM-GPG-KEY-AlmaLinux; \
gpg --batch --export --armor 76FD3DB13AB67410B89DB10E82562EA9AD986DA3 > ${GNUPGHOME}/RPM-GPG-KEY-oracle; \
rpmkeys --import ${GNUPGHOME}/PERCONA-PACKAGING-KEY ${GNUPGHOME}/RPM-GPG-KEY-centosofficial ${GNUPGHOME}/RPM-GPG-KEY-EPEL-8 ${GNUPGHOME}/RPM-GPG-KEY-AlmaLinux ${GNUPGHOME}/RPM-GPG-KEY-oracle; \
microdnf -y update; \
microdnf install -y findutils; \
curl -Lf -o /tmp/percona-release.rpm https://repo.percona.com/yum/percona-release-latest.noarch.rpm; \
rpmkeys --checksig /tmp/percona-release.rpm; \
rpm -i /tmp/percona-release.rpm; \
rm -rf "$GNUPGHOME" /tmp/percona-release.rpm; \
rpm --import /etc/pki/rpm-gpg/PERCONA-PACKAGING-KEY; \
percona-release enable telemetry ${PXC_REPO}; \
percona-release enable pdpxc-8.0 ${PXC_REPO};

RUN set -ex; \
curl -Lf -o /tmp/epel-release.rpm https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm; \
curl -Lf -o /tmp/libev.rpm http://repo.almalinux.org/almalinux/8/AppStream/aarch64/os/Packages/libev-4.24-6.el8.aarch64.rpm; \
curl -Lf -o /tmp/pv.rpm http://download.fedoraproject.org/pub/epel/8/Everything/aarch64/Packages/p/pv-1.6.6-7.el8.aarch64.rpm; \
rpmkeys --checksig /tmp/epel-release.rpm /tmp/libev.rpm /tmp/pv.rpm; \
rpm -i /tmp/pv.rpm; \
rpm -i /tmp/epel-release.rpm; \
rpm -i /tmp/libev.rpm; \
rm -rf /tmp/epel-release.rpm /tmp/libev.rpm /tmp/pv.rpm


RUN set -ex; \
#percona-release setup -y ps-80; \
rpm -e --nodeps tzdata; \
microdnf install -y \
jemalloc \
numactl-libs \
jq \
socat \
krb5-libs \
openssl \
shadow-utils \
hostname \
curl \
tzdata \
diffutils \
libaio \
which \
pam \
procps-ng \
cracklib-dicts \
percona-telemetry-agent \
libatomic \
tar; \
microdnf update -y libksba; \
microdnf update -y krb5-libs; \
microdnf update -y libnghttp2; \
microdnf update -y glibc; \
microdnf clean all; \
rm -rf /var/cache/dnf /var/cache/yum

# create mysql user/group before mysql installation
RUN groupadd -g 1001 mysql; \
useradd -u 1001 -r -g 1001 -s /sbin/nologin \
-c "Default Application User" mysql

# we need licenses from docs
RUN set -ex; \
# systemd is required for nss-pam-ldap
curl -Lf -o /tmp/nss-pam-ldapd.rpm http://vault.centos.org/centos/8/AppStream/aarch64/os/Packages/nss-pam-ldapd-0.9.9-3.el8.aarch64.rpm; \
rpmkeys --checksig /tmp/nss-pam-ldapd.rpm; \
rpm -iv /tmp/nss-pam-ldapd.rpm --nodeps; \
rm -rf /tmp/nss-pam-ldapd.rpm; \
curl -Lf -o /tmp/percona-xtradb-cluster-server.rpm https://repo.percona.com/pxc-80/yum/experimental/8/RPMS/aarch64/percona-xtradb-cluster-server-${FULL_PERCONA_XTRADBCLUSTER_VERSION}.aarch64.rpm; \
curl -Lf -o /tmp/percona-xtradb-cluster-shared.rpm https://repo.percona.com/pxc-80/yum/experimental/8/RPMS/aarch64/percona-xtradb-cluster-shared-${FULL_PERCONA_XTRADBCLUSTER_VERSION}.aarch64.rpm; \
curl -Lf -o /tmp/percona-xtradb-cluster-client.rpm https://repo.percona.com/pxc-80/yum/experimental/8/RPMS/aarch64/percona-xtradb-cluster-client-${FULL_PERCONA_XTRADBCLUSTER_VERSION}.aarch64.rpm; \
curl -Lf -o /tmp/percona-xtradb-cluster-shared-compat.rpm https://repo.percona.com/pxc-80/yum/experimental/8/RPMS/aarch64/percona-xtradb-cluster-shared-compat-${FULL_PERCONA_XTRADBCLUSTER_VERSION}.aarch64.rpm; \
curl -Lf -o /tmp/percona-xtradb-cluster-icu-data-files.rpm https://repo.percona.com/pxc-80/yum/experimental/8/RPMS/aarch64/percona-xtradb-cluster-icu-data-files-${FULL_PERCONA_XTRADBCLUSTER_VERSION}.aarch64.rpm; \
rpmkeys --checksig /tmp/percona-xtradb-cluster-shared-compat.rpm /tmp/percona-xtradb-cluster-server.rpm /tmp/percona-xtradb-cluster-shared.rpm /tmp/percona-xtradb-cluster-client.rpm; \
rpm -iv /tmp/percona-xtradb-cluster-shared-compat.rpm /tmp/percona-xtradb-cluster-server.rpm /tmp/percona-xtradb-cluster-shared.rpm /tmp/percona-xtradb-cluster-client.rpm /tmp/percona-xtradb-cluster-icu-data-files.rpm --nodeps; \
microdnf clean all; \
rm -rf /tmp/percona-xtradb-cluster-shared-compat.rpm /tmp/percona-xtradb-cluster-server.rpm /tmp/percona-xtradb-cluster-shared.rpm /tmp/percona-xtradb-cluster-client.rpm /tmp/percona-xtradb-cluster-icu-data-files.rpm; \
rm -rf /usr/bin/mysqltest /usr/bin/perror /usr/bin/replace /usr/bin/resolve_stack_dump /usr/bin/resolveip; \
rm -rf /var/cache/dnf /var/cache/yum /var/lib/mysql /usr/lib64/mysql/plugin/debug /usr/sbin/mysqld-debug /usr/lib64/mecab /usr/lib64/mysql/mecab /usr/bin/myisam*; \
rpm -ql percona-xtradb-cluster-client | egrep -v "mysql$|mysqldump$|mysqladmin$|mysqlbinlog$" | xargs rm -rf

COPY LICENSE /licenses/LICENSE.Dockerfile
RUN cp /usr/share/doc/percona-xtradb-cluster-galera/COPYING /licenses/LICENSE.galera; \
cp /usr/share/doc/percona-xtradb-cluster-galera/LICENSE.* /licenses/

COPY dockerdir /
COPY --from=go_builder /go/src/github.com/percona/percona-xtradb-cluster-operator/cmd/peer-list /usr/bin/

RUN set -ex; \
rmdir /etc/my.cnf.d; \
ln -s /etc/mysql/conf.d /etc/my.cnf.d; \
rm -f /etc/percona-xtradb-cluster.conf.d/*.cnf; \
echo '!include /etc/mysql/node.cnf' > /etc/my.cnf; \
echo '!includedir /etc/my.cnf.d/' >> /etc/my.cnf; \
echo '!includedir /etc/percona-xtradb-cluster.conf.d/' >> /etc/my.cnf

RUN set -ex; \
mkdir -p /etc/mysql/conf.d/ /var/log/mysql /var/lib/mysql /docker-entrypoint-initdb.d /etc/percona-xtradb-cluster.conf.d; \
chown -R 1001:1001 /etc/mysql/ /var/log/mysql /var/lib/mysql /docker-entrypoint-initdb.d /etc/percona-xtradb-cluster.conf.d; \
chmod -R g=u /etc/mysql/ /var/log/mysql /var/lib/mysql /docker-entrypoint-initdb.d /etc/percona-xtradb-cluster.conf.d

ARG DEBUG
RUN if [[ -n $DEBUG ]] ; then \
set -ex; \
sed -i '/\[mysqld\]/a wsrep_log_conflicts\nlog_error_verbosity=3\nwsrep_debug=1' /etc/mysql/node.cnf; \
mv /usr/sbin/mysqld /usr/sbin/mysqld-ps; \
cp /usr/local/bin/mysqld-debug /usr/sbin/mysqld; \
percona-release enable pdpxc-8.0 ${PXC_REPO}; \
microdnf install -y \
net-tools \
nc \
percona-toolkit \
gdb; \
percona-release disable pdpxc-8.0 ${PXC_REPO}; \
curl -Lf -o /tmp/telnet.rpm https://repo.almalinux.org/almalinux/8.10/AppStream/aarch64/os/Packages/telnet-0.17-76.el8.aarch64.rpm; \
curl -Lf -o /tmp/tcpdump.rpm https://repo.almalinux.org/almalinux/8.10/AppStream/aarch64/os/Packages/tcpdump-4.9.3-5.el8.aarch64.rpm; \
curl -Lf -o /tmp/perf.rpm https://repo.almalinux.org/almalinux/8/BaseOS/aarch64/os/Packages/perf-4.18.0-553.16.1.el8_10.aarch64.rpm; \
curl -Lf -o /tmp/strace.rpm https://repo.almalinux.org/almalinux/8/BaseOS/aarch64/os/Packages/strace-5.18-2.el8.aarch64.rpm; \
curl -Lf -o /tmp/percona-xtradb-cluster-debuginfo.rpm https://repo.percona.com/pxc-80/yum/${PXC_REPO}/8/RPMS/aarch64/percona-xtradb-cluster-debuginfo-${FULL_PERCONA_XTRADBCLUSTER_VERSION}.aarch64.rpm; \
curl -Lf -o /tmp/percona-xtradb-cluster-server-debuginfo.rpm https://repo.percona.com/pxc-80/yum/${PXC_REPO}/8/RPMS/aarch64/percona-xtradb-cluster-server-debuginfo-${FULL_PERCONA_XTRADBCLUSTER_VERSION}.aarch64.rpm; \
rpmkeys --checksig /tmp/telnet.rpm /tmp/tcpdump.rpm /tmp/perf.rpm /tmp/strace.rpm /tmp/percona-xtradb-cluster-debuginfo.rpm /tmp/percona-xtradb-cluster-server-debuginfo.rpm; \
rpm -i /tmp/telnet.rpm /tmp/tcpdump.rpm /tmp/perf.rpm /tmp/strace.rpm /tmp/percona-xtradb-cluster-debuginfo.rpm /tmp/percona-xtradb-cluster-server-debuginfo.rpm --nodeps; \
rm -rf /tmp/telnet.rpm /tmp/tcpdump.rpm /tmp/perf.rpm /tmp/strace.rpm /tmp/percona-xtradb-cluster-debuginfo.rpm /tmp/percona-xtradb-cluster-server-debuginfo.rpm; \
microdnf clean all; \
rm -rf /var/cache/dnf /var/cache/yum; \
fi

ADD https://raw.githubusercontent.com/Percona-Lab/telemetry-agent/phase-0/call-home.sh /call-home.sh
RUN chmod a+rx call-home.sh
RUN mkdir -p /usr/local/percona
RUN chown mysql:mysql /usr/local/percona
ENV CALL_HOME_OPTIONAL_PARAMS=" -s ${OS_VER}"

COPY telemetry-agent-supervisor.sh /usr/bin/
RUN set -ex; \
chown mysql /usr/bin/telemetry-agent-supervisor.sh; \
chown mysql /usr/bin/percona-telemetry-agent; \
chown mysql /usr/local/percona/telemetry/history; \
chown -R mysql /var/log/percona; \
chmod ug+rwx /usr/bin/telemetry-agent-supervisor.sh
ENV PERCONA_TELEMETRY_CHECK_INTERVAL=86400
ENV PERCONA_TELEMETRY_HISTORY_KEEP_INTERVAL=604800
ENV PERCONA_TELEMETRY_RESEND_INTERVAL=60
ENV PERCONA_TELEMETRY_URL=https://check.percona.com/v1/telemetry/GenericReport
USER 1001

VOLUME ["/var/lib/mysql", "/var/log/mysql"]

ENTRYPOINT ["/entrypoint.sh"]

EXPOSE 3306 4567 4568 33060
CMD ["mysqld"]

0 comments on commit c11988b

Please sign in to comment.