-
Notifications
You must be signed in to change notification settings - Fork 237
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
ef94e49
commit c11988b
Showing
1 changed file
with
180 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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"] |