aboutsummaryrefslogtreecommitdiff
path: root/docker
diff options
context:
space:
mode:
authorDaneyon Hansen <danehans@cisco.com>2015-02-25 05:49:40 +0000
committerDaneyon Hansen <danehans@cisco.com>2015-03-20 16:17:51 +0000
commit5547b5fe786b7491d2e33f92c4082535f2bb56cf (patch)
treec90551eafcd645f37de33e051913b91f5a126026 /docker
parentfb425db56db16ec4ac061a2ee49054eed4fc284a (diff)
downloadkolla-5547b5fe786b7491d2e33f92c4082535f2bb56cf.tar.gz
kolla-5547b5fe786b7491d2e33f92c4082535f2bb56cf.zip
Implements: blueprint Implement a database container set
Previously, the database container was configured for use with Kubernetes. This patch removed any k8s dependencies, adds a script to manage mysql server.cnf settings and splits data and app containers. Splitting the containers provides additional portability and operational efficiencies compared to host mounts. Change-Id: I80656450c02dda5f2959d187eec20d5877dc54a2
Diffstat (limited to 'docker')
-rw-r--r--docker/mariadb-app/Dockerfile18
l---------docker/mariadb-app/build (renamed from docker/mariadb/build)0
-rwxr-xr-xdocker/mariadb-app/config-mysql.sh24
-rwxr-xr-xdocker/mariadb-app/mysql-entrypoint.sh49
-rw-r--r--docker/mariadb-data/Dockerfile6
l---------docker/mariadb-data/build1
-rw-r--r--docker/mariadb/Dockerfile13
-rwxr-xr-xdocker/mariadb/entrypoint.sh47
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 "$@"