Use mariadb image from base images

This commit is contained in:
Daniel Berteaud 2024-01-10 21:52:45 +01:00
parent cc7d2f7eec
commit 3988173036
10 changed files with 3 additions and 229 deletions

View File

@ -1,20 +0,0 @@
FROM danielberteaud/mariadb-client:24.1-1
MAINTAINER Daniel Berteaud <dbd@ehtrace.com>
ENV MYSQL_CONF_10_section=mysqld \
MYSQL_CONF_11_innodb_buffer_pool_size=50%
RUN set -eux &&\
apk --no-cache upgrade &&\
apk --no-cache add mariadb mariadb-server-utils &&\
chown mysql:mysql /etc/my.cnf.d &&\
rm -f /etc/my.cnf.d/* &&\
mkdir /data /run/mysqld &&\
chown mysql:mysql /data /run/mysqld &&\
chmod 700 /data
COPY root/ /
EXPOSE 3306
USER mysql
CMD ["mariadbd", "--console", "--skip-name-resolve"]

View File

@ -1,44 +0,0 @@
#!/bin/sh
set -eo pipefail
get_max_mem(){
if [ -e /sys/fs/cgroup/memory.max ]; then
# Read /sys/fs/cgroup/memory.max
MAX=$(cat /sys/fs/cgroup/memory.max)
# If it's "max", then the container has no limit, and we must detect the available RAM
if [ "${MAX}" = "max" ]; then
echo $(($(cat /proc/meminfo | grep MemTotal | sed -E 's/MemTotal:\s+([0-9]+)\s+kB/\1/')/1024))
else
echo $(($(cat /sys/fs/cgroup/memory.max)/1024/1024))
fi
else
echo $(($(cat /proc/meminfo | grep MemTotal | sed -E 's/MemTotal:\s+([0-9]+)\s+kB/\1/')/1024))
fi
}
if mount | grep -q ' /etc/my.cnf '; then
echo "/etc/my.cnf is mounted, skiping config from env vars"
else
echo "Configuring from env vars"
for VAR in $(printenv | grep -E '^MYSQL_CONF_' | sed -E 's/MYSQL_CONF_([^=]+)=.*/\1/' | sort -V); do
DIRECTIVE=$(echo ${VAR} | sed -E 's/^[0-9]+_//')
VALUE=$(printenv MYSQL_CONF_${VAR})
if [ "${DIRECTIVE}" = "section" ]; then
echo "[${VALUE}]" >> /etc/my.cnf.d/env.cnf
else
# Allow some memory related settings to be expressed as a %
if echo ${DIRECTIVE} | grep -q -E "^(innodb_buffer_pool_size)$"; then
if echo ${VALUE} | grep -q -E "[0-9]+%$"; then
PERCENT=$(echo $VALUE | sed -E 's|%$||')
MAX_MEM=$(get_max_mem)
VALUE=$((${MAX_MEM}*${PERCENT}/100))MB
fi
fi
echo "Adding ${DIRECTIVE} = ${VALUE} in /etc/my.cnf.d/env.cnf"
echo "${DIRECTIVE} = ${VALUE}" >> /etc/my.cnf.d/env.cnf
fi
done
fi

View File

@ -1,36 +0,0 @@
#!/bin/sh
set -euo pipefail
mkdir -p /data/db
if [ -d /data/db/mysql ]; then
echo "MariaDB is already initialized"
else
echo "Bootstraping MariaDB"
mysql_install_db
MYSQL_DATABASE=${MYSQL_DATABASE:-""}
MYSQL_USER=${MYSQL_USER:-""}
MYSQL_PASSWORD=${MYSQL_PASSWORD:-""}
cat << EOF > /tmp/mariainit.sql
USE mysql;
FLUSH PRIVILEGES;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' identified by '$MYSQL_ROOT_PASSWORD' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' identified by '$MYSQL_ROOT_PASSWORD' WITH GRANT OPTION;
DROP DATABASE test;
EOF
if [ "$MYSQL_DATABASE" != "" ]; then
echo "CREATE DATABASE IF NOT EXISTS \`$MYSQL_DATABASE\` CHARACTER SET utf8 COLLATE utf8_general_ci;"
if [ "$MYSQL_USER" != "" ]; then
echo "GRANT ALL ON \`$MYSQL_DATABASE\`.* to '$MYSQL_USER'@'%' IDENTIFIED BY '$MYSQL_PASSWORD';"
fi
fi
mariadbd --bootstrap --verbose=0 --skip-name-resolve < /tmp/mariainit.sql
rm -f /tmp/mariainit.sql
fi

View File

@ -1,13 +0,0 @@
[client-server]
port = 3306
socket = /run/mysqld/mysqld.sock
[mysqld]
pid-file = /tmp/mysql.pid
symbolic-links = 0
datadir = /data/db
default_storage_engine = InnoDB
innodb_log_file_size = 512M
!includedir /etc/my.cnf.d

View File

@ -58,7 +58,7 @@ job "mariadb" {
}
config {
image = "danielberteaud/mariadb:24.1-2"
image = "danielberteaud/mariadb:24.1-5"
pids_limit = 100
command = "/local/mysql_upgrade.sh"
}
@ -127,7 +127,7 @@ _EOT
kill_timeout = "5m"
config {
image = "danielberteaud/mariadb:24.1-2"
image = "danielberteaud/mariadb:24.1-5"
volumes = [
"secrets/:/etc/my.cnf.d",
"secrets/my.conf:/var/lib/mysql/.my.cnf:ro",

View File

@ -1,20 +0,0 @@
FROM [[ .docker.repo ]][[ .docker.base_images.mariadb_client.image ]]
MAINTAINER [[ .docker.maintainer ]]
ENV MYSQL_CONF_10_section=mysqld \
MYSQL_CONF_11_innodb_buffer_pool_size=50%
RUN set -eux &&\
apk --no-cache upgrade &&\
apk --no-cache add mariadb mariadb-server-utils &&\
chown mysql:mysql /etc/my.cnf.d &&\
rm -f /etc/my.cnf.d/* &&\
mkdir /data /run/mysqld &&\
chown mysql:mysql /data /run/mysqld &&\
chmod 700 /data
COPY root/ /
EXPOSE 3306
USER mysql
CMD ["mariadbd", "--console", "--skip-name-resolve"]

View File

@ -1,44 +0,0 @@
#!/bin/sh
set -eo pipefail
get_max_mem(){
if [ -e /sys/fs/cgroup/memory.max ]; then
# Read /sys/fs/cgroup/memory.max
MAX=$(cat /sys/fs/cgroup/memory.max)
# If it's "max", then the container has no limit, and we must detect the available RAM
if [ "${MAX}" = "max" ]; then
echo $(($(cat /proc/meminfo | grep MemTotal | sed -E 's/MemTotal:\s+([0-9]+)\s+kB/\1/')/1024))
else
echo $(($(cat /sys/fs/cgroup/memory.max)/1024/1024))
fi
else
echo $(($(cat /proc/meminfo | grep MemTotal | sed -E 's/MemTotal:\s+([0-9]+)\s+kB/\1/')/1024))
fi
}
if mount | grep -q ' /etc/my.cnf '; then
echo "/etc/my.cnf is mounted, skiping config from env vars"
else
echo "Configuring from env vars"
for VAR in $(printenv | grep -E '^MYSQL_CONF_' | sed -E 's/MYSQL_CONF_([^=]+)=.*/\1/' | sort -V); do
DIRECTIVE=$(echo ${VAR} | sed -E 's/^[0-9]+_//')
VALUE=$(printenv MYSQL_CONF_${VAR})
if [ "${DIRECTIVE}" = "section" ]; then
echo "[${VALUE}]" >> /etc/my.cnf.d/env.cnf
else
# Allow some memory related settings to be expressed as a %
if echo ${DIRECTIVE} | grep -q -E "^(innodb_buffer_pool_size)$"; then
if echo ${VALUE} | grep -q -E "[0-9]+%$"; then
PERCENT=$(echo $VALUE | sed -E 's|%$||')
MAX_MEM=$(get_max_mem)
VALUE=$((${MAX_MEM}*${PERCENT}/100))MB
fi
fi
echo "Adding ${DIRECTIVE} = ${VALUE} in /etc/my.cnf.d/env.cnf"
echo "${DIRECTIVE} = ${VALUE}" >> /etc/my.cnf.d/env.cnf
fi
done
fi

View File

@ -1,36 +0,0 @@
#!/bin/sh
set -euo pipefail
mkdir -p /data/db
if [ -d /data/db/mysql ]; then
echo "MariaDB is already initialized"
else
echo "Bootstraping MariaDB"
mysql_install_db
MYSQL_DATABASE=${MYSQL_DATABASE:-""}
MYSQL_USER=${MYSQL_USER:-""}
MYSQL_PASSWORD=${MYSQL_PASSWORD:-""}
cat << EOF > /tmp/mariainit.sql
USE mysql;
FLUSH PRIVILEGES;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' identified by '$MYSQL_ROOT_PASSWORD' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' identified by '$MYSQL_ROOT_PASSWORD' WITH GRANT OPTION;
DROP DATABASE test;
EOF
if [ "$MYSQL_DATABASE" != "" ]; then
echo "CREATE DATABASE IF NOT EXISTS \`$MYSQL_DATABASE\` CHARACTER SET utf8 COLLATE utf8_general_ci;"
if [ "$MYSQL_USER" != "" ]; then
echo "GRANT ALL ON \`$MYSQL_DATABASE\`.* to '$MYSQL_USER'@'%' IDENTIFIED BY '$MYSQL_PASSWORD';"
fi
fi
mariadbd --bootstrap --verbose=0 --skip-name-resolve < /tmp/mariainit.sql
rm -f /tmp/mariainit.sql
fi

View File

@ -1,13 +0,0 @@
[client-server]
port = 3306
socket = /run/mysqld/mysqld.sock
[mysqld]
pid-file = /tmp/mysql.pid
symbolic-links = 0
datadir = /data/db
default_storage_engine = InnoDB
innodb_log_file_size = 512M
!includedir /etc/my.cnf.d

View File

@ -9,7 +9,7 @@ mariadb:
server:
# The image to use
image: '[[ .docker.repo ]]mariadb:24.1-2'
image: '[[ .docker.repo ]][[ .docker.base_images.mariadb.image ]]'
# Resource allocation
resources: