Skip to content

Commit

Permalink
Merge pull request #987 from infosiftr/repomd
Browse files Browse the repository at this point in the history
Improve version update scraping; drop 5.7 on Debian (eol) and add 8.1 innovation on Oracle Linux
  • Loading branch information
yosifkit authored Jul 28, 2023
2 parents 2baf92d + c13cda9 commit e83b98d
Show file tree
Hide file tree
Showing 8 changed files with 614 additions and 119 deletions.
100 changes: 0 additions & 100 deletions 5.7/Dockerfile.debian

This file was deleted.

2 changes: 1 addition & 1 deletion 5.7/Dockerfile.oracle

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions apply-templates.sh
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,8 @@ generated_warning() {
for version; do
export version

rm -f "$version"/Dockerfile.*

for variant in oracle debian; do
export variant

Expand Down
12 changes: 7 additions & 5 deletions generate-stackbrew-library.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ set -Eeuo pipefail

declare -A aliases=(
[5.7]='5'
[8.0]='8 latest'
[innovation]='latest'
)

defaultDefaultVariant='oracle'
Expand Down Expand Up @@ -73,13 +73,15 @@ for version; do
versionAliases+=( $fullVersion )
fullVersion="${fullVersion%[.-]*}"
done
versionAliases+=(
$version
${aliases[$version]:-}
)
versionAliases+=( $fullVersion )
if [ "$version" != "$fullVersion" ]; then
versionAliases+=( $version )
fi
versionAliases+=( ${aliases[$version]:-} )

for variant in oracle debian; do
df="Dockerfile.$variant"
[ -s "$version/$df" ] || continue
commit="$(dirCommit "$version" "$df")"

variantAliases=( "${versionAliases[@]/%/-$variant}" )
Expand Down
122 changes: 122 additions & 0 deletions innovation/Dockerfile.oracle
Original file line number Diff line number Diff line change
@@ -0,0 +1,122 @@
#
# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh"
#
# PLEASE DO NOT EDIT IT DIRECTLY.
#

FROM oraclelinux:8-slim

RUN set -eux; \
groupadd --system --gid 999 mysql; \
useradd --system --uid 999 --gid 999 --home-dir /var/lib/mysql --no-create-home mysql

# add gosu for easy step-down from root
# https://github.com/tianon/gosu/releases
ENV GOSU_VERSION 1.16
RUN set -eux; \
# TODO find a better userspace architecture detection method than querying the kernel
arch="$(uname -m)"; \
case "$arch" in \
aarch64) gosuArch='arm64' ;; \
x86_64) gosuArch='amd64' ;; \
*) echo >&2 "error: unsupported architecture: '$arch'"; exit 1 ;; \
esac; \
curl -fL -o /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$gosuArch.asc"; \
curl -fL -o /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$gosuArch"; \
export GNUPGHOME="$(mktemp -d)"; \
gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4; \
gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu; \
rm -rf "$GNUPGHOME" /usr/local/bin/gosu.asc; \
chmod +x /usr/local/bin/gosu; \
gosu --version; \
gosu nobody true

RUN set -eux; \
microdnf install -y \
bzip2 \
gzip \
openssl \
xz \
zstd \
# Oracle Linux 8+ is very slim :)
findutils \
; \
microdnf clean all

RUN set -eux; \
# https://dev.mysql.com/doc/refman/8.0/en/checking-gpg-signature.html
# gpg: key 3A79BD29: public key "MySQL Release Engineering <mysql-build@oss.oracle.com>" imported
key='859BE8D7C586F538430B19C2467B942D3A79BD29'; \
export GNUPGHOME="$(mktemp -d)"; \
gpg --batch --keyserver keyserver.ubuntu.com --recv-keys "$key"; \
gpg --batch --export --armor "$key" > /etc/pki/rpm-gpg/RPM-GPG-KEY-mysql; \
rm -rf "$GNUPGHOME"

ENV MYSQL_MAJOR innovation
ENV MYSQL_VERSION 8.1.0-1.el8

RUN set -eu; \
. /etc/os-release; \
{ \
echo '[mysqlinnovation-server-minimal]'; \
echo 'name=MySQL innovation Server Minimal'; \
echo 'enabled=1'; \
echo "baseurl=https://repo.mysql.com/yum/mysql-innovation-community/docker/el/${VERSION_ID%%[.-]*}/\$basearch/"; \
echo 'gpgcheck=1'; \
echo 'gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql'; \
# https://github.com/docker-library/mysql/pull/680#issuecomment-825930524
echo 'module_hotfixes=true'; \
} | tee /etc/yum.repos.d/mysql-community-minimal.repo

RUN set -eux; \
microdnf install -y "mysql-community-server-minimal-$MYSQL_VERSION"; \
microdnf clean all; \
# the "socket" value in the Oracle packages is set to "/var/lib/mysql" which isn't a great place for the socket (we want it in "/var/run/mysqld" instead)
# https://github.com/docker-library/mysql/pull/680#issuecomment-636121520
grep -F 'socket=/var/lib/mysql/mysql.sock' /etc/my.cnf; \
sed -i 's!^socket=.*!socket=/var/run/mysqld/mysqld.sock!' /etc/my.cnf; \
grep -F 'socket=/var/run/mysqld/mysqld.sock' /etc/my.cnf; \
{ echo '[client]'; echo 'socket=/var/run/mysqld/mysqld.sock'; } >> /etc/my.cnf; \
\
# make sure users dumping files in "/etc/mysql/conf.d" still works
! grep -F '!includedir' /etc/my.cnf; \
{ echo; echo '!includedir /etc/mysql/conf.d/'; } >> /etc/my.cnf; \
mkdir -p /etc/mysql/conf.d; \
# ensure these directories exist and have useful permissions
# the rpm package has different opinions on the mode of `/var/run/mysqld`, so this needs to be after install
mkdir -p /var/lib/mysql /var/run/mysqld; \
chown mysql:mysql /var/lib/mysql /var/run/mysqld; \
# ensure that /var/run/mysqld (used for socket and lock files) is writable regardless of the UID our mysqld instance ends up having at runtime
chmod 1777 /var/lib/mysql /var/run/mysqld; \
\
mkdir /docker-entrypoint-initdb.d; \
\
mysqld --version; \
mysql --version

RUN set -eu; \
. /etc/os-release; \
{ \
echo '[mysql-tools-community]'; \
echo 'name=MySQL Tools Community'; \
echo "baseurl=https://repo.mysql.com/yum/mysql-tools-community/el/${VERSION_ID%%[.-]*}/\$basearch/"; \
echo 'enabled=1'; \
echo 'gpgcheck=1'; \
echo 'gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql'; \
# https://github.com/docker-library/mysql/pull/680#issuecomment-825930524
echo 'module_hotfixes=true'; \
} | tee /etc/yum.repos.d/mysql-community-tools.repo
ENV MYSQL_SHELL_VERSION 8.0.34-1.el8
RUN set -eux; \
microdnf install -y "mysql-shell-$MYSQL_SHELL_VERSION"; \
microdnf clean all; \
\
mysqlsh --version

VOLUME /var/lib/mysql

COPY docker-entrypoint.sh /usr/local/bin/
ENTRYPOINT ["docker-entrypoint.sh"]

EXPOSE 3306 33060
CMD ["mysqld"]
Loading

0 comments on commit e83b98d

Please sign in to comment.