diff options
Diffstat (limited to 'docker')
| -rw-r--r-- | docker/mariadb-app/Dockerfile | 18 | ||||
| l--------- | docker/mariadb-app/build (renamed from docker/mariadb/build) | 0 | ||||
| -rwxr-xr-x | docker/mariadb-app/config-mysql.sh | 24 | ||||
| -rwxr-xr-x | docker/mariadb-app/mysql-entrypoint.sh | 49 | ||||
| -rw-r--r-- | docker/mariadb-data/Dockerfile | 6 | ||||
| l--------- | docker/mariadb-data/build | 1 | ||||
| -rw-r--r-- | docker/mariadb/Dockerfile | 13 | ||||
| -rwxr-xr-x | docker/mariadb/entrypoint.sh | 47 |
8 files changed, 98 insertions, 60 deletions
diff --git a/docker/mariadb-app/Dockerfile b/docker/mariadb-app/Dockerfile new file mode 100644 index 000000000..692fd2bb0 --- /dev/null +++ b/docker/mariadb-app/Dockerfile @@ -0,0 +1,18 @@ +FROM %%KOLLA_NAMESPACE%%/%%KOLLA_PREFIX%%base +MAINTAINER Kolla Project (https://launchpad.net/kolla) + +# Install packages +# TODO check if hostname pkg is needed. +RUN yum -y install mariadb \ + mariadb-server \ + MySQL-python \ + hostname \ + && yum clean all + +# Add mysql configuration scripts +ADD config-mysql.sh /opt/kolla/config-mysql.sh +ADD mysql-entrypoint.sh /opt/kolla/mysql-entrypoint.sh + +# start mysql +ENTRYPOINT ["/opt/kolla/mysql-entrypoint.sh"] +CMD ["mysqld_safe"] diff --git a/docker/mariadb/build b/docker/mariadb-app/build index d2accf7d3..d2accf7d3 120000 --- a/docker/mariadb/build +++ b/docker/mariadb-app/build diff --git a/docker/mariadb-app/config-mysql.sh b/docker/mariadb-app/config-mysql.sh new file mode 100755 index 000000000..5819000c5 --- /dev/null +++ b/docker/mariadb-app/config-mysql.sh @@ -0,0 +1,24 @@ +#!/bin/sh + +. /opt/kolla/kolla-common.sh + +: ${BIND_ADDRESS:=$PUBLIC_IP} +: ${DB_ROOT_PASSWORD:=$DB_ROOT_PASSWORD} +: ${DEFAULT_STORAGE_ENGINE:=innodb} +: ${COLLATION_SERVER:=utf8_general_ci} +: ${INIT_CONNECT:=SET NAMES utf8} +: ${CHAR_SET_SERVER:=utf8} +: ${INNODB_FILE_PER_TABLE:=true} +: ${DATADIR:=/var/lib/mysql} +: ${TEMP_FILE:='/tmp/mysql-first-time.sql'} + +server_cnf=/etc/my.cnf.d/server.cnf + +crudini --set $server_cnf mysqld bind-address $BIND_ADDRESS +crudini --set $server_cnf mysqld default-storage-engine $DEFAULT_STORAGE_ENGINE +crudini --set $server_cnf mysqld collation-server $COLLATION_SERVER +crudini --set $server_cnf mysqld init-connect "'${INIT_CONNECT}'" +crudini --set $server_cnf mysqld character-set-server $CHAR_SET_SERVER +if [ "${INNODB_FILE_PER_TABLE}" == "true" ] || ["${INNODB_FILE_PER_TABLE}" == "True" ] ; then + crudini --set $server_cnf mysqld innodb_file_per_table 1 +fi diff --git a/docker/mariadb-app/mysql-entrypoint.sh b/docker/mariadb-app/mysql-entrypoint.sh new file mode 100755 index 000000000..1b4a559f1 --- /dev/null +++ b/docker/mariadb-app/mysql-entrypoint.sh @@ -0,0 +1,49 @@ +#!/bin/bash +set -e + +# Configure MySQL settings +. /opt/kolla/config-mysql.sh + +if [ -z "$(ls -A /var/lib/mysql)" -a "${1%_safe}" = 'mysqld' ]; then + PATH=/usr/libexec:$PATH + export PATH + + if [ -z "$MARIADB_ROOT_PASSWORD" ]; then + echo >&2 'error: database is uninitialized and MARIADB_ROOT_PASSWORD not set' + echo >&2 ' Did you forget to add -e MARIADB_ROOT_PASSWORD=... ?' + exit 1 + fi + + mysql_install_db --user=mysql --datadir="$DATADIR" + + # These statements _must_ be on individual lines, and _must_ end with + # semicolons (no line breaks or comments are permitted). + # TODO proper SQL escaping on ALL the things D: + TEMP_FILE='/tmp/mysql-first-time.sql' + cat > "$TEMP_FILE" <<-EOSQL + DELETE FROM mysql.user ; + CREATE USER 'root'@'%' IDENTIFIED BY '${MARIADB_ROOT_PASSWORD}' ; + GRANT ALL ON *.* TO 'root'@'%' WITH GRANT OPTION ; + DROP DATABASE IF EXISTS test ; + EOSQL + + if [ "$MARIADB_DATABASE" ]; then + echo "CREATE DATABASE IF NOT EXISTS $MARIADB_DATABASE ;" >> "$TEMP_FILE" + fi + + if [ "$MARIADB_USER" -a "$MARIADB_PASSWORD" ]; then + echo "CREATE USER '$MARIADB_USER'@'%' IDENTIFIED BY '$MARIADB_PASSWORD' ;" >> "$TEMP_FILE" + + if [ "$MARIADB_DATABASE" ]; then + echo "GRANT ALL ON $MARIADB_DATABASE.* TO '$MARIADB_USER'@'%' ;" >> "$TEMP_FILE" + fi + fi + + echo 'FLUSH PRIVILEGES ;' >> "$TEMP_FILE" + + set -- "$@" --init-file="$TEMP_FILE" +fi + +chown -R mysql:mysql "$DATADIR" + +exec "$@" diff --git a/docker/mariadb-data/Dockerfile b/docker/mariadb-data/Dockerfile new file mode 100644 index 000000000..4f1a9b455 --- /dev/null +++ b/docker/mariadb-data/Dockerfile @@ -0,0 +1,6 @@ +FROM %%KOLLA_NAMESPACE%%/%%KOLLA_PREFIX%%base +MAINTAINER Kolla Project (https://launchpad.net/kolla) + +# Command needed to start the data container. +# Note: data containers do not need to be persistent. +CMD ["/bin/sh"] diff --git a/docker/mariadb-data/build b/docker/mariadb-data/build new file mode 120000 index 000000000..d2accf7d3 --- /dev/null +++ b/docker/mariadb-data/build @@ -0,0 +1 @@ +../../tools/build-docker-image
\ No newline at end of file diff --git a/docker/mariadb/Dockerfile b/docker/mariadb/Dockerfile deleted file mode 100644 index b0aa27bbd..000000000 --- a/docker/mariadb/Dockerfile +++ /dev/null @@ -1,13 +0,0 @@ -FROM %%KOLLA_NAMESPACE%%/%%KOLLA_PREFIX%%base -MAINTAINER Kolla Project (https://launchpad.net/kolla) - -RUN yum -y install mariadb-galera-server hostname; yum clean all -ADD /entrypoint.sh /entrypoint.sh - -VOLUME /var/lib/mysql -VOLUME /var/log/mariadb - -EXPOSE 3306 - -ENTRYPOINT ["/entrypoint.sh"] -CMD ["mysqld_safe"] diff --git a/docker/mariadb/entrypoint.sh b/docker/mariadb/entrypoint.sh deleted file mode 100755 index 898823352..000000000 --- a/docker/mariadb/entrypoint.sh +++ /dev/null @@ -1,47 +0,0 @@ -#!/bin/bash -set -e - -: ${MYSQL_ROOT_PASSWORD:=$DB_ROOT_PASSWORD} - -if [ -z "$(ls -A /var/lib/mysql)" -a "${1%_safe}" = 'mysqld' ]; then - PATH=/usr/libexec:$PATH - export PATH - - if [ -z "$MYSQL_ROOT_PASSWORD" ]; then - echo >&2 'error: database is uninitialized and MYSQL_ROOT_PASSWORD not set' - echo >&2 ' Did you forget to add -e MYSQL_ROOT_PASSWORD=... ?' - exit 1 - fi - - mysql_install_db --user=mysql --datadir=/var/lib/mysql - - # These statements _must_ be on individual lines, and _must_ end with - # semicolons (no line breaks or comments are permitted). - # TODO proper SQL escaping on ALL the things D: - TEMP_FILE='/tmp/mysql-first-time.sql' - cat > "$TEMP_FILE" <<-EOSQL - DELETE FROM mysql.user ; - CREATE USER 'root'@'%' IDENTIFIED BY '${MYSQL_ROOT_PASSWORD}' ; - GRANT ALL ON *.* TO 'root'@'%' WITH GRANT OPTION ; - DROP DATABASE IF EXISTS test ; - EOSQL - - if [ "$MYSQL_DATABASE" ]; then - echo "CREATE DATABASE IF NOT EXISTS $MYSQL_DATABASE ;" >> "$TEMP_FILE" - fi - - if [ "$MYSQL_USER" -a "$MYSQL_PASSWORD" ]; then - echo "CREATE USER '$MYSQL_USER'@'%' IDENTIFIED BY '$MYSQL_PASSWORD' ;" >> "$TEMP_FILE" - - if [ "$MYSQL_DATABASE" ]; then - echo "GRANT ALL ON $MYSQL_DATABASE.* TO '$MYSQL_USER'@'%' ;" >> "$TEMP_FILE" - fi - fi - - echo 'FLUSH PRIVILEGES ;' >> "$TEMP_FILE" - - set -- "$@" --init-file="$TEMP_FILE" -fi - -chown -R mysql:mysql /var/lib/mysql -exec "$@" |
