Skip to content

Commit 938f20a

Browse files
committed
Added 8.0 build
1 parent 1632cc8 commit 938f20a

File tree

2 files changed

+138
-0
lines changed

2 files changed

+138
-0
lines changed

8.0/Dockerfile

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
FROM oraclelinux:latest
2+
ENV PACKAGE_URL https://repo.mysql.com/yum/mysql-8.0-community/docker/x86_64/mysql-community-server-minimal-8.0.0-1.el7.x86_64.rpm
3+
4+
# Install server
5+
RUN rpmkeys --import http://repo.mysql.com/RPM-GPG-KEY-mysql \
6+
&& yum install -y $PACKAGE_URL \
7+
&& yum install -y libpwquality \
8+
&& rm -rf /var/cache/yum/*
9+
RUN mkdir /docker-entrypoint-initdb.d
10+
11+
VOLUME /var/lib/mysql
12+
13+
COPY docker-entrypoint.sh /entrypoint.sh
14+
ENTRYPOINT ["/entrypoint.sh"]
15+
16+
EXPOSE 3306 33060
17+
CMD ["mysqld"]
18+

8.0/docker-entrypoint.sh

Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
1+
#!/bin/bash
2+
set -e
3+
4+
# if command starts with an option, prepend mysqld
5+
if [ "${1:0:1}" = '-' ]; then
6+
set -- mysqld "$@"
7+
fi
8+
9+
if [ "$1" = 'mysqld' ]; then
10+
# Test we're able to startup without errors. We redirect stdout to /dev/null so
11+
# only the error messages are left.
12+
result=0
13+
output=$("$@" --verbose --help 2>&1 > /dev/null) || result=$?
14+
if [ ! "$result" = "0" ]; then
15+
echo >&2 'error: could not run mysql. This could be caused by a misconfigured my.cnf'
16+
echo >&2 "$output"
17+
exit 1
18+
fi
19+
20+
# Get config
21+
DATADIR="$("$@" --verbose --help --log-bin-index=/tmp/tmp.index 2>/dev/null | awk '$1 == "datadir" { print $2; exit }')"
22+
23+
if [ ! -d "$DATADIR/mysql" ]; then
24+
if [ -z "$MYSQL_ROOT_PASSWORD" -a -z "$MYSQL_ALLOW_EMPTY_PASSWORD" -a -z "$MYSQL_RANDOM_ROOT_PASSWORD" ]; then
25+
echo >&2 'error: database is uninitialized and password option is not specified '
26+
echo >&2 ' You need to specify one of MYSQL_ROOT_PASSWORD, MYSQL_ALLOW_EMPTY_PASSWORD and MYSQL_RANDOM_ROOT_PASSWORD'
27+
exit 1
28+
fi
29+
# If the password variable is a filename we use the contents of the file
30+
if [ -f "$MYSQL_ROOT_PASSWORD" ]; then
31+
MYSQL_ROOT_PASSWORD="$(cat $MYSQL_ROOT_PASSWORD)"
32+
fi
33+
mkdir -p "$DATADIR"
34+
chown -R mysql:mysql "$DATADIR"
35+
36+
echo 'Initializing database'
37+
"$@" --initialize-insecure=on
38+
echo 'Database initialized'
39+
40+
"$@" --skip-networking &
41+
pid="$!"
42+
43+
mysql=( mysql --protocol=socket -uroot )
44+
45+
for i in {30..0}; do
46+
if echo 'SELECT 1' | "${mysql[@]}" &> /dev/null; then
47+
break
48+
fi
49+
echo 'MySQL init process in progress...'
50+
sleep 1
51+
done
52+
if [ "$i" = 0 ]; then
53+
echo >&2 'MySQL init process failed.'
54+
exit 1
55+
fi
56+
57+
mysql_tzinfo_to_sql /usr/share/zoneinfo | "${mysql[@]}" mysql
58+
59+
if [ ! -z "$MYSQL_RANDOM_ROOT_PASSWORD" ]; then
60+
MYSQL_ROOT_PASSWORD="$(pwmake 128)"
61+
echo "GENERATED ROOT PASSWORD: $MYSQL_ROOT_PASSWORD"
62+
fi
63+
"${mysql[@]}" <<-EOSQL
64+
-- What's done in this file shouldn't be replicated
65+
-- or products like mysql-fabric won't work
66+
SET @@SESSION.SQL_LOG_BIN=0;
67+
DELETE FROM mysql.user WHERE user NOT IN ('mysql.sys', 'mysqlxsys');
68+
CREATE USER 'root'@'%' IDENTIFIED BY '${MYSQL_ROOT_PASSWORD}' ;
69+
GRANT ALL ON *.* TO 'root'@'%' WITH GRANT OPTION ;
70+
DROP DATABASE IF EXISTS test ;
71+
FLUSH PRIVILEGES ;
72+
EOSQL
73+
if [ ! -z "$MYSQL_ROOT_PASSWORD" ]; then
74+
mysql+=( -p"${MYSQL_ROOT_PASSWORD}" )
75+
fi
76+
77+
if [ "$MYSQL_DATABASE" ]; then
78+
echo "CREATE DATABASE IF NOT EXISTS \`$MYSQL_DATABASE\` ;" | "${mysql[@]}"
79+
mysql+=( "$MYSQL_DATABASE" )
80+
fi
81+
82+
if [ "$MYSQL_USER" -a "$MYSQL_PASSWORD" ]; then
83+
echo "CREATE USER '"$MYSQL_USER"'@'%' IDENTIFIED BY '"$MYSQL_PASSWORD"' ;" | "${mysql[@]}"
84+
85+
if [ "$MYSQL_DATABASE" ]; then
86+
echo "GRANT ALL ON \`"$MYSQL_DATABASE"\`.* TO '"$MYSQL_USER"'@'%' ;" | "${mysql[@]}"
87+
fi
88+
89+
echo 'FLUSH PRIVILEGES ;' | "${mysql[@]}"
90+
fi
91+
echo
92+
for f in /docker-entrypoint-initdb.d/*; do
93+
case "$f" in
94+
*.sh) echo "$0: running $f"; . "$f" ;;
95+
*.sql) echo "$0: running $f"; "${mysql[@]}" < "$f" && echo ;;
96+
*) echo "$0: ignoring $f" ;;
97+
esac
98+
echo
99+
done
100+
101+
if [ ! -z "$MYSQL_ONETIME_PASSWORD" ]; then
102+
"${mysql[@]}" <<-EOSQL
103+
ALTER USER 'root'@'%' PASSWORD EXPIRE;
104+
EOSQL
105+
fi
106+
if ! kill -s TERM "$pid" || ! wait "$pid"; then
107+
echo >&2 'MySQL init process failed.'
108+
exit 1
109+
fi
110+
111+
echo
112+
echo 'MySQL init process done. Ready for start up.'
113+
echo
114+
fi
115+
116+
chown -R mysql:mysql "$DATADIR"
117+
fi
118+
119+
exec "$@"
120+

0 commit comments

Comments
 (0)