Skip to content

Commit f42fa91

Browse files
committed
Combine _datadir and _socket functions into general _get_config
The new function takes as input the config value to fetch
1 parent eb8679b commit f42fa91

File tree

4 files changed

+36
-40
lines changed

4 files changed

+36
-40
lines changed

5.5/docker-entrypoint.sh

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -54,19 +54,18 @@ _check_config() {
5454
fi
5555
}
5656

57-
_datadir() {
58-
"$@" --verbose --help --log-bin-index="$(mktemp -u)" 2>/dev/null | awk '$1 == "datadir" { print $2; exit }'
59-
}
60-
61-
# For use with the client if user passes the --socket argument
62-
_socket() {
63-
"$@" --verbose --help --log-bin-index="$(mktemp -u)" 2>/dev/null | awk '$1 == "socket" { print $2; exit }'
57+
# Fetch value from server config
58+
# We use mysqld --verbose --help instead of my_print_defaults because the
59+
# latter only show values present in config files, and not server defaults
60+
_get_config() {
61+
local conf="$1"; shift
62+
"$@" --verbose --help --log-bin-index="$(mktemp -u)" 2>/dev/null | awk '$1 == "'"$conf"'" { print $2; exit }'
6463
}
6564

6665
# allow the container to be started with `--user`
6766
if [ "$1" = 'mysqld' -a -z "$wantHelp" -a "$(id -u)" = '0' ]; then
6867
_check_config "$@"
69-
DATADIR="$(_datadir "$@")"
68+
DATADIR="$(_get_config 'datadir' "$@")"
7069
mkdir -p "$DATADIR"
7170
chown -R mysql:mysql "$DATADIR"
7271
exec gosu mysql "$BASH_SOURCE" "$@"
@@ -76,7 +75,7 @@ if [ "$1" = 'mysqld' -a -z "$wantHelp" ]; then
7675
# still need to check config, container may have started with --user
7776
_check_config "$@"
7877
# Get config
79-
DATADIR="$(_datadir "$@")"
78+
DATADIR="$(_get_config 'datadir' "$@")"
8079

8180
if [ ! -d "$DATADIR/mysql" ]; then
8281
file_env 'MYSQL_ROOT_PASSWORD'
@@ -92,7 +91,7 @@ if [ "$1" = 'mysqld' -a -z "$wantHelp" ]; then
9291
mysql_install_db --datadir="$DATADIR" --rpm --basedir=/usr/local/mysql
9392
echo 'Database initialized'
9493

95-
SOCKET="$(_socket "$@")"
94+
SOCKET="$(_get_config 'socket' "$@")"
9695
"$@" --skip-networking --basedir=/usr/local/mysql --socket="${SOCKET}" &
9796
pid="$!"
9897

5.6/docker-entrypoint.sh

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -54,19 +54,18 @@ _check_config() {
5454
fi
5555
}
5656

57-
_datadir() {
58-
"$@" --verbose --help --log-bin-index="$(mktemp -u)" 2>/dev/null | awk '$1 == "datadir" { print $2; exit }'
59-
}
60-
61-
# For use with the client if user passes the --socket argument
62-
_socket() {
63-
"$@" --verbose --help --log-bin-index="$(mktemp -u)" 2>/dev/null | awk '$1 == "socket" { print $2; exit }'
57+
# Fetch value from server config
58+
# We use mysqld --verbose --help instead of my_print_defaults because the
59+
# latter only show values present in config files, and not server defaults
60+
_get_config() {
61+
local conf="$1"; shift
62+
"$@" --verbose --help --log-bin-index="$(mktemp -u)" 2>/dev/null | awk '$1 == "'"$conf"'" { print $2; exit }'
6463
}
6564

6665
# allow the container to be started with `--user`
6766
if [ "$1" = 'mysqld' -a -z "$wantHelp" -a "$(id -u)" = '0' ]; then
6867
_check_config "$@"
69-
DATADIR="$(_datadir "$@")"
68+
DATADIR="$(_get_config 'datadir' "$@")"
7069
mkdir -p "$DATADIR"
7170
chown -R mysql:mysql "$DATADIR"
7271
exec gosu mysql "$BASH_SOURCE" "$@"
@@ -76,7 +75,7 @@ if [ "$1" = 'mysqld' -a -z "$wantHelp" ]; then
7675
# still need to check config, container may have started with --user
7776
_check_config "$@"
7877
# Get config
79-
DATADIR="$(_datadir "$@")"
78+
DATADIR="$(_get_config 'datadir' "$@")"
8079

8180
if [ ! -d "$DATADIR/mysql" ]; then
8281
file_env 'MYSQL_ROOT_PASSWORD'
@@ -92,7 +91,7 @@ if [ "$1" = 'mysqld' -a -z "$wantHelp" ]; then
9291
mysql_install_db --datadir="$DATADIR" --rpm --keep-my-cnf
9392
echo 'Database initialized'
9493

95-
SOCKET="$(_socket "$@")"
94+
SOCKET="$(_get_config 'socket' "$@")"
9695
"$@" --skip-networking --socket="${SOCKET}" &
9796
pid="$!"
9897

5.7/docker-entrypoint.sh

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -54,19 +54,18 @@ _check_config() {
5454
fi
5555
}
5656

57-
_datadir() {
58-
"$@" --verbose --help 2>/dev/null | awk '$1 == "datadir" { print $2; exit }'
59-
}
60-
61-
# For use with the client if user passes the --socket argument
62-
_socket() {
63-
"$@" --verbose --help 2>/dev/null | awk '$1 == "socket" { print $2; exit }'
57+
# Fetch value from server config
58+
# We use mysqld --verbose --help instead of my_print_defaults because the
59+
# latter only show values present in config files, and not server defaults
60+
_get_config() {
61+
local conf="$1"; shift
62+
"$@" --verbose --help --log-bin-index="$(mktemp -u)" 2>/dev/null | awk '$1 == "'"$conf"'" { print $2; exit }'
6463
}
6564

6665
# allow the container to be started with `--user`
6766
if [ "$1" = 'mysqld' -a -z "$wantHelp" -a "$(id -u)" = '0' ]; then
6867
_check_config "$@"
69-
DATADIR="$(_datadir "$@")"
68+
DATADIR="$(_get_config 'datadir' "$@")"
7069
mkdir -p "$DATADIR"
7170
chown -R mysql:mysql "$DATADIR"
7271
exec gosu mysql "$BASH_SOURCE" "$@"
@@ -76,7 +75,7 @@ if [ "$1" = 'mysqld' -a -z "$wantHelp" ]; then
7675
# still need to check config, container may have started with --user
7776
_check_config "$@"
7877
# Get config
79-
DATADIR="$(_datadir "$@")"
78+
DATADIR="$(_get_config 'datadir' "$@")"
8079

8180
if [ ! -d "$DATADIR/mysql" ]; then
8281
file_env 'MYSQL_ROOT_PASSWORD'
@@ -99,7 +98,7 @@ if [ "$1" = 'mysqld' -a -z "$wantHelp" ]; then
9998
echo 'Certificates initialized'
10099
fi
101100

102-
SOCKET="$(_socket "$@")"
101+
SOCKET="$(_get_config 'socket' "$@")"
103102
"$@" --skip-networking --socket="${SOCKET}" &
104103
pid="$!"
105104

8.0/docker-entrypoint.sh

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -54,19 +54,18 @@ _check_config() {
5454
fi
5555
}
5656

57-
_datadir() {
58-
"$@" --verbose --help 2>/dev/null | awk '$1 == "datadir" { print $2; exit }'
59-
}
60-
61-
# For use with the client if user passes the --socket argument
62-
_socket() {
63-
"$@" --verbose --help 2>/dev/null | awk '$1 == "socket" { print $2; exit }'
57+
# Fetch value from server config
58+
# We use mysqld --verbose --help instead of my_print_defaults because the
59+
# latter only show values present in config files, and not server defaults
60+
_get_config() {
61+
local conf="$1"; shift
62+
"$@" --verbose --help --log-bin-index="$(mktemp -u)" 2>/dev/null | awk '$1 == "'"$conf"'" { print $2; exit }'
6463
}
6564

6665
# allow the container to be started with `--user`
6766
if [ "$1" = 'mysqld' -a -z "$wantHelp" -a "$(id -u)" = '0' ]; then
6867
_check_config "$@"
69-
DATADIR="$(_datadir "$@")"
68+
DATADIR="$(_get_config 'datadir' "$@")"
7069
mkdir -p "$DATADIR"
7170
chown -R mysql:mysql "$DATADIR"
7271
exec gosu mysql "$BASH_SOURCE" "$@"
@@ -76,7 +75,7 @@ if [ "$1" = 'mysqld' -a -z "$wantHelp" ]; then
7675
# still need to check config, container may have started with --user
7776
_check_config "$@"
7877
# Get config
79-
DATADIR="$(_datadir "$@")"
78+
DATADIR="$(_get_config 'datadir' "$@")"
8079

8180
if [ ! -d "$DATADIR/mysql" ]; then
8281
file_env 'MYSQL_ROOT_PASSWORD'
@@ -99,7 +98,7 @@ if [ "$1" = 'mysqld' -a -z "$wantHelp" ]; then
9998
echo 'Certificates initialized'
10099
fi
101100

102-
SOCKET="$(_socket "$@")"
101+
SOCKET="$(_get_config 'socket' "$@")"
103102
"$@" --skip-networking --socket="${SOCKET}" &
104103
pid="$!"
105104

0 commit comments

Comments
 (0)