From cb419dcd82f3201d3ed1d09078d4890d2e5f2642 Mon Sep 17 00:00:00 2001 From: Jim Van Fleet Date: Fri, 2 Sep 2016 16:01:40 -0400 Subject: [PATCH 1/6] Basic refactoring --- Dockerfile | 6 +++--- container_files/{ => bin}/fix-permissions.sh | 0 .../{container_start.sh => bin/start.sh} | 20 +++++++++++-------- 3 files changed, 15 insertions(+), 11 deletions(-) rename container_files/{ => bin}/fix-permissions.sh (100%) rename container_files/{container_start.sh => bin/start.sh} (79%) diff --git a/Dockerfile b/Dockerfile index 74a9ea5..ece6ddd 100644 --- a/Dockerfile +++ b/Dockerfile @@ -19,10 +19,10 @@ LABEL Build docker build --rm --tag $registry/$maintainer/$imagename . RUN yum -y install --setopt=tsflags=nodocs mariadb-server bind-utils pwgen psmisc hostname vim # Add starters and installers -ADD ./container_files /root +ADD ./container_files /opt # Add Volumes and Set permissions -RUN mkdir /opt/shared && chmod 777 /opt/shared && chmod 777 /root/*.sh +RUN mkdir /opt/shared && chmod 777 /opt/shared && chmod 777 /opt/bin/*.sh # Place VOLUME statement below all changes to /var/lib/mysql VOLUME /var/lib/mysql @@ -39,4 +39,4 @@ ENV TERM "testterm" # Port EXPOSE 3306 -CMD ["/root/container_start.sh"] +CMD ["/opt/bin/start.sh"] diff --git a/container_files/fix-permissions.sh b/container_files/bin/fix-permissions.sh similarity index 100% rename from container_files/fix-permissions.sh rename to container_files/bin/fix-permissions.sh diff --git a/container_files/container_start.sh b/container_files/bin/start.sh similarity index 79% rename from container_files/container_start.sh rename to container_files/bin/start.sh index 87e9515..3e14e86 100755 --- a/container_files/container_start.sh +++ b/container_files/bin/start.sh @@ -49,27 +49,31 @@ if [ -e "/tmp/firsttimerunning" ]; then echo "CREATE USER '$MYSQL_USER'@'%' IDENTIFIED BY '$MYSQL_PASSWORD' ;" >> "$tempSqlFile" echo "GRANT ALL ON $MYSQL_DATABASE.* TO '$MYSQL_USER'@'%' IDENTIFIED BY '$MYSQL_PASSWORD' ;" >> "$tempSqlFile" echo "GRANT ALL ON $MYSQL_DATABASE.* TO '$MYSQL_USER'@'localhost' IDENTIFIED BY '$MYSQL_PASSWORD' ;" >> "$tempSqlFile" - echo "GRANT ALL ON $MYSQL_DATABASE.* TO '$MYSQL_USER'@'comanage.compose_i2network' IDENTIFIED BY '$MYSQL_PASSWORD' ;" >> "$tempSqlFile" - echo "GRANT ALL ON $MYSQL_DATABASE.* TO '$MYSQL_USER'@'comanage.comanage_i2network' IDENTIFIED BY '$MYSQL_PASSWORD' ;" >> "$tempSqlFile" - echo "GRANT ALL ON $MYSQL_DATABASE.* TO '$MYSQL_USER'@'comanage.config_i2network' IDENTIFIED BY '$MYSQL_PASSWORD' ;" >> "$tempSqlFile" fi echo 'FLUSH PRIVILEGES ;' >> "$tempSqlFile" - echo "character-set-server = utf8mb4" >> /etc/my.cnf - echo "collation-server = utf8mb4_unicode_ci" >> /etc/my.cnf + echo "character-set-server = utf8" >> /etc/my.cnf + echo "collation-server = utf8_unicode_ci" >> /etc/my.cnf echo "" >> /etc/my.cnf echo "Fixing Permissions" >> $log chown -R mysql:mysql $MYSQL_DATADIR - /root/fix-permissions.sh $MYSQL_DATADIR >> $log - /root/fix-permissions.sh /var/log/mariadb/ >> $log - /root/fix-permissions.sh /var/run/ >> $log + /opt/bin/fix-permissions.sh $MYSQL_DATADIR >> $log + /opt/bin/fix-permissions.sh /var/log/mariadb/ >> $log + /opt/bin/fix-permissions.sh /var/run/ >> $log echo "Done Fixing Permissions" >> $log /usr/bin/mysqld_safe --init-file="$tempSqlFile" --datadir="$MYSQL_DATADIR" else echo "Not Creating a MariaDB - Using Existing from DataDir: $MYSQL_DATADIR" >> $log + + echo "Fixing Permissions" >> $log + chown -R mysql:mysql $MYSQL_DATADIR + /opt/bin/fix-permissions.sh $MYSQL_DATADIR >> $log + /opt/bin/fix-permissions.sh /var/log/mariadb/ >> $log + /opt/bin/fix-permissions.sh /var/run/ >> $log + /usr/bin/mysqld_safe --datadir="$MYSQL_DATADIR" fi From f890d383302651233a89c1d1f414a900ca3f4dd0 Mon Sep 17 00:00:00 2001 From: Jim Van Fleet Date: Mon, 5 Sep 2016 10:05:33 -0400 Subject: [PATCH 2/6] Adding volume mounting to testing equation --- bin/start.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/start.sh b/bin/start.sh index 9b071e9..55799e0 100755 --- a/bin/start.sh +++ b/bin/start.sh @@ -3,6 +3,6 @@ source common.bash . echo "Running Docker image($registry/$maintainer/$imagename)" -docker run --name=$imagename -d -p 3306:3306 $maintainer/$imagename +docker run --name=$imagename -d -p 3306:3306 -v mysql:/var/lib/mysql $maintainer/$imagename exit 0 \ No newline at end of file From a7360fd1d86c860661d9cfae33fa6d828c7c0ee9 Mon Sep 17 00:00:00 2001 From: Jim Van Fleet Date: Mon, 5 Sep 2016 10:27:30 -0400 Subject: [PATCH 3/6] Apparently some user perms issues with the newly created root user --- container_files/bin/start.sh | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/container_files/bin/start.sh b/container_files/bin/start.sh index 3e14e86..dfcb70c 100755 --- a/container_files/bin/start.sh +++ b/container_files/bin/start.sh @@ -45,10 +45,14 @@ if [ -e "/tmp/firsttimerunning" ]; then if [ "$MYSQL_DATABASE" != "" ]; then + echo "flush privileges;" >> "$tempSqlFile" echo "CREATE DATABASE IF NOT EXISTS \`$MYSQL_DATABASE\` ;" >> "$tempSqlFile" echo "CREATE USER '$MYSQL_USER'@'%' IDENTIFIED BY '$MYSQL_PASSWORD' ;" >> "$tempSqlFile" echo "GRANT ALL ON $MYSQL_DATABASE.* TO '$MYSQL_USER'@'%' IDENTIFIED BY '$MYSQL_PASSWORD' ;" >> "$tempSqlFile" echo "GRANT ALL ON $MYSQL_DATABASE.* TO '$MYSQL_USER'@'localhost' IDENTIFIED BY '$MYSQL_PASSWORD' ;" >> "$tempSqlFile" + echo "GRANT ALL ON $MYSQL_DATABASE.* TO '$MYSQL_USER'@'$MYSQL_DATABASE.%_i2network' IDENTIFIED BY '$MYSQL_PASSWORD' ;" >> "$tempSqlFile" + echo "GRANT ALL ON $MYSQL_DATABASE.* TO '$MYSQL_USER'@'$MYSQL_DATABASE.%_i2network' IDENTIFIED BY '$MYSQL_PASSWORD' ;" >> "$tempSqlFile" + echo "GRANT ALL ON $MYSQL_DATABASE.* TO '$MYSQL_USER'@'$MYSQL_DATABASE.%_i2network' IDENTIFIED BY '$MYSQL_PASSWORD' ;" >> "$tempSqlFile" fi echo 'FLUSH PRIVILEGES ;' >> "$tempSqlFile" @@ -67,13 +71,6 @@ if [ -e "/tmp/firsttimerunning" ]; then /usr/bin/mysqld_safe --init-file="$tempSqlFile" --datadir="$MYSQL_DATADIR" else echo "Not Creating a MariaDB - Using Existing from DataDir: $MYSQL_DATADIR" >> $log - - echo "Fixing Permissions" >> $log - chown -R mysql:mysql $MYSQL_DATADIR - /opt/bin/fix-permissions.sh $MYSQL_DATADIR >> $log - /opt/bin/fix-permissions.sh /var/log/mariadb/ >> $log - /opt/bin/fix-permissions.sh /var/run/ >> $log - /usr/bin/mysqld_safe --datadir="$MYSQL_DATADIR" fi From 9274ccd8f53bfacc1ae276703d8c93a0020186d0 Mon Sep 17 00:00:00 2001 From: Jim Van Fleet Date: Mon, 5 Sep 2016 10:35:54 -0400 Subject: [PATCH 4/6] Noting some startup problem log entries --- container_files/bin/start.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/container_files/bin/start.sh b/container_files/bin/start.sh index dfcb70c..ad22ae7 100755 --- a/container_files/bin/start.sh +++ b/container_files/bin/start.sh @@ -56,9 +56,9 @@ if [ -e "/tmp/firsttimerunning" ]; then fi echo 'FLUSH PRIVILEGES ;' >> "$tempSqlFile" - - echo "character-set-server = utf8" >> /etc/my.cnf - echo "collation-server = utf8_unicode_ci" >> /etc/my.cnf + # [jvf] mysqld_safe unknown option '--character-set-server=utf8' [FIXME] + #echo "character-set-server = utf8" >> /etc/my.cnf + #echo "collation-server = utf8_unicode_ci" >> /etc/my.cnf echo "" >> /etc/my.cnf echo "Fixing Permissions" >> $log From 8322c7448ba0ba7b4a286a8a6221484959316618 Mon Sep 17 00:00:00 2001 From: Jim Van Fleet Date: Mon, 5 Sep 2016 10:39:01 -0400 Subject: [PATCH 5/6] Pruning dangling volumes in cleanup --- Jenkinsfile | 1 + 1 file changed, 1 insertion(+) diff --git a/Jenkinsfile b/Jenkinsfile index 068e85a..b8c8a68 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -80,6 +80,7 @@ node('docker') { sh 'rm -rf tmp' sh 'docker rm mariadb' + sh 'docker volume rm $(docker volume ls -qf dangling=true)' } From ff3bf9c4e8b6ba7ee56a0c1f05f94c84be57146f Mon Sep 17 00:00:00 2001 From: Jim Van Fleet Date: Mon, 5 Sep 2016 10:51:01 -0400 Subject: [PATCH 6/6] Non-interactive terminal --- tests/running.bats | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/running.bats b/tests/running.bats index fd76935..1d5c5d9 100644 --- a/tests/running.bats +++ b/tests/running.bats @@ -5,7 +5,7 @@ load ../common # Assumes process is running @test "MariaDB service is listening on port 3306" { - docker exec -it $imagename netstat -tulpn | grep :3306 + docker exec -i $imagename netstat -tulpn | grep :3306 } @test "MySQL user running process" {