Use mariadb image from base images
This commit is contained in:
parent
cc7d2f7eec
commit
3988173036
|
@ -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"]
|
|
|
@ -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
|
|
|
@ -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
|
|
|
@ -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
|
|
|
@ -58,7 +58,7 @@ job "mariadb" {
|
||||||
}
|
}
|
||||||
|
|
||||||
config {
|
config {
|
||||||
image = "danielberteaud/mariadb:24.1-2"
|
image = "danielberteaud/mariadb:24.1-5"
|
||||||
pids_limit = 100
|
pids_limit = 100
|
||||||
command = "/local/mysql_upgrade.sh"
|
command = "/local/mysql_upgrade.sh"
|
||||||
}
|
}
|
||||||
|
@ -127,7 +127,7 @@ _EOT
|
||||||
kill_timeout = "5m"
|
kill_timeout = "5m"
|
||||||
|
|
||||||
config {
|
config {
|
||||||
image = "danielberteaud/mariadb:24.1-2"
|
image = "danielberteaud/mariadb:24.1-5"
|
||||||
volumes = [
|
volumes = [
|
||||||
"secrets/:/etc/my.cnf.d",
|
"secrets/:/etc/my.cnf.d",
|
||||||
"secrets/my.conf:/var/lib/mysql/.my.cnf:ro",
|
"secrets/my.conf:/var/lib/mysql/.my.cnf:ro",
|
||||||
|
|
|
@ -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"]
|
|
|
@ -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
|
|
|
@ -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
|
|
|
@ -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
|
|
|
@ -9,7 +9,7 @@ mariadb:
|
||||||
server:
|
server:
|
||||||
|
|
||||||
# The image to use
|
# The image to use
|
||||||
image: '[[ .docker.repo ]]mariadb:24.1-2'
|
image: '[[ .docker.repo ]][[ .docker.base_images.mariadb.image ]]'
|
||||||
|
|
||||||
# Resource allocation
|
# Resource allocation
|
||||||
resources:
|
resources:
|
||||||
|
|
Loading…
Reference in New Issue