From 4f690e05f016baa173677626be99847a878f3b57 Mon Sep 17 00:00:00 2001
From: MGregoire <gregoire@martinache.net>
Date: Thu, 17 Nov 2016 16:05:01 +0100
Subject: [PATCH] Base pour les dockerfiles Mongo et Redis

---
 Databases Docker/Dockerfile~                  | 27 ++++++++++++
 Databases Docker/Mongo/Dockerfile             | 27 ++++++++++++
 Databases Docker/Mongo/README                 |  5 +++
 Databases Docker/Mongo/run.sh                 | 24 +++++++++++
 Databases Docker/Mongo/runScript.sh           |  3 ++
 .../Mongo/set_mongodb_password.sh             | 36 ++++++++++++++++
 Databases Docker/README~                      |  3 ++
 Databases Docker/Redis/Dockerfile             | 36 ++++++++++++++++
 Databases Docker/Redis/Dockerfile~            | 41 +++++++++++++++++++
 Databases Docker/Redis/README                 |  1 +
 Databases Docker/Redis/README~                |  2 +
 Databases Docker/Redis/runScript.sh           |  2 +
 Databases Docker/Redis/runScript.sh~          |  2 +
 Databases Docker/runScript.sh~                |  1 +
 14 files changed, 210 insertions(+)
 create mode 100644 Databases Docker/Dockerfile~
 create mode 100644 Databases Docker/Mongo/Dockerfile
 create mode 100644 Databases Docker/Mongo/README
 create mode 100755 Databases Docker/Mongo/run.sh
 create mode 100755 Databases Docker/Mongo/runScript.sh
 create mode 100755 Databases Docker/Mongo/set_mongodb_password.sh
 create mode 100644 Databases Docker/README~
 create mode 100644 Databases Docker/Redis/Dockerfile
 create mode 100644 Databases Docker/Redis/Dockerfile~
 create mode 100644 Databases Docker/Redis/README
 create mode 100644 Databases Docker/Redis/README~
 create mode 100755 Databases Docker/Redis/runScript.sh
 create mode 100755 Databases Docker/Redis/runScript.sh~
 create mode 100755 Databases Docker/runScript.sh~

diff --git a/Databases Docker/Dockerfile~ b/Databases Docker/Dockerfile~
new file mode 100644
index 00000000..10b950ea
--- /dev/null
+++ b/Databases Docker/Dockerfile~	
@@ -0,0 +1,27 @@
+FROM ubuntu:14.04
+MAINTAINER Tutum Labs <support@tutum.co>
+
+RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10 && \
+    echo "deb http://repo.mongodb.org/apt/ubuntu "$(lsb_release -sc)"/mongodb-org/3.2 multiverse" | tee /etc/apt/sources.list.d/mongodb-org-3.2.list && \
+    apt-get update && \
+    apt-get install -y --force-yes pwgen mongodb-org mongodb-org-server mongodb-org-shell mongodb-org-mongos mongodb-org-tools && \
+    echo "mongodb-org hold" | dpkg --set-selections && echo "mongodb-org-server hold" | dpkg --set-selections && \
+    echo "mongodb-org-shell hold" | dpkg --set-selections && \
+    echo "mongodb-org-mongos hold" | dpkg --set-selections && \
+    echo "mongodb-org-tools hold" | dpkg --set-selections
+
+VOLUME /data/db
+
+ENV AUTH yes
+ENV STORAGE_ENGINE wiredTiger
+ENV JOURNALING yes
+
+ADD run.sh /run.sh
+ADD set_mongodb_password.sh /set_mongodb_password.sh
+
+RUN chmod +x /run.sh
+RUN chmod +x /set_mongodb_password.sh
+
+EXPOSE 27017 28017
+
+CMD ["/run.sh"]
diff --git a/Databases Docker/Mongo/Dockerfile b/Databases Docker/Mongo/Dockerfile
new file mode 100644
index 00000000..f7269594
--- /dev/null
+++ b/Databases Docker/Mongo/Dockerfile	
@@ -0,0 +1,27 @@
+FROM ubuntu:14.04
+MAINTAINER Grégoire Martinache <gmartina@etu.utc.fr>
+
+RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10 && \
+    echo "deb http://repo.mongodb.org/apt/ubuntu "$(lsb_release -sc)"/mongodb-org/3.2 multiverse" | tee /etc/apt/sources.list.d/mongodb-org-3.2.list && \
+    apt-get update && \
+    apt-get install -y --force-yes pwgen mongodb-org mongodb-org-server mongodb-org-shell mongodb-org-mongos mongodb-org-tools && \
+    echo "mongodb-org hold" | dpkg --set-selections && echo "mongodb-org-server hold" | dpkg --set-selections && \
+    echo "mongodb-org-shell hold" | dpkg --set-selections && \
+    echo "mongodb-org-mongos hold" | dpkg --set-selections && \
+    echo "mongodb-org-tools hold" | dpkg --set-selections
+
+VOLUME /data/db
+
+ENV AUTH yes
+ENV STORAGE_ENGINE wiredTiger
+ENV JOURNALING yes
+
+ADD run.sh /run.sh
+ADD set_mongodb_password.sh /set_mongodb_password.sh
+
+RUN chmod +x /run.sh
+RUN chmod +x /set_mongodb_password.sh
+
+EXPOSE 27017 28017
+
+CMD ["/run.sh"]
diff --git a/Databases Docker/Mongo/README b/Databases Docker/Mongo/README
new file mode 100644
index 00000000..6f57b601
--- /dev/null
+++ b/Databases Docker/Mongo/README	
@@ -0,0 +1,5 @@
+Ce dockerfile permet de mettre un mot de passe sur la base Mongo via une variable d'environnement (contrairement au build officiel).
+
+Build le dockerfile puis créer le container grâce à runScript.sh
+
+Basé sur la version de tutumcloud (Github)
\ No newline at end of file
diff --git a/Databases Docker/Mongo/run.sh b/Databases Docker/Mongo/run.sh
new file mode 100755
index 00000000..bcd9e0a7
--- /dev/null
+++ b/Databases Docker/Mongo/run.sh	
@@ -0,0 +1,24 @@
+#!/bin/bash
+set -m
+
+mongodb_cmd="mongod --storageEngine $STORAGE_ENGINE"
+cmd="$mongodb_cmd --httpinterface --rest --master"
+if [ "$AUTH" == "yes" ]; then
+    cmd="$cmd --auth"
+fi
+
+if [ "$JOURNALING" == "no" ]; then
+    cmd="$cmd --nojournal"
+fi
+
+if [ "$OPLOG_SIZE" != "" ]; then
+    cmd="$cmd --oplogSize $OPLOG_SIZE"
+fi
+
+$cmd &
+
+if [ ! -f /data/db/.mongodb_password_set ]; then
+    /set_mongodb_password.sh
+fi
+
+fg
diff --git a/Databases Docker/Mongo/runScript.sh b/Databases Docker/Mongo/runScript.sh
new file mode 100755
index 00000000..198bb0de
--- /dev/null
+++ b/Databases Docker/Mongo/runScript.sh	
@@ -0,0 +1,3 @@
+#!/bin/bash
+
+docker run -v /root/mongo/data:/data/db -d --name mongoLatex -p 27017:27017 -p 28017:28017 -e MONGODB_USER="USERNAME" -e MONGODB_DATABASE="DBNAME" -e MONGODB_PASS="PASSWORD" dockerfile/mongodb
diff --git a/Databases Docker/Mongo/set_mongodb_password.sh b/Databases Docker/Mongo/set_mongodb_password.sh
new file mode 100755
index 00000000..e70fd805
--- /dev/null
+++ b/Databases Docker/Mongo/set_mongodb_password.sh	
@@ -0,0 +1,36 @@
+#!/bin/bash
+
+USER=${MONGODB_USER:-"admin"}
+DATABASE=${MONGODB_DATABASE:-"admin"}
+PASS=${MONGODB_PASS:-$(pwgen -s 12 1)}
+_word=$( [ ${MONGODB_PASS} ] && echo "preset" || echo "random" )
+
+RET=1
+while [[ RET -ne 0 ]]; do
+    echo "=> Waiting for confirmation of MongoDB service startup"
+    sleep 5
+    mongo admin --eval "help" >/dev/null 2>&1
+    RET=$?
+done
+
+echo "=> Creating an ${USER} user with a ${_word} password in MongoDB"
+mongo admin --eval "db.createUser({user: '$USER', pwd: '$PASS', roles:[{role:'root',db:'admin'}]});"
+
+if [ "$DATABASE" != "admin" ]; then
+    echo "=> Creating an ${USER} user with a ${_word} password in MongoDB"
+    mongo admin -u $USER -p $PASS << EOF
+use $DATABASE
+db.createUser({user: '$USER', pwd: '$PASS', roles:[{role:'dbOwner',db:'$DATABASE'}]})
+EOF
+fi
+
+echo "=> Done!"
+touch /data/db/.mongodb_password_set
+
+echo "========================================================================"
+echo "You can now connect to this MongoDB server using:"
+echo ""
+echo "    mongo $DATABASE -u $USER -p $PASS --host <host> --port <port>"
+echo ""
+echo "Please remember to change the above password as soon as possible!"
+echo "========================================================================"
diff --git a/Databases Docker/README~ b/Databases Docker/README~
new file mode 100644
index 00000000..647a13cd
--- /dev/null
+++ b/Databases Docker/README~	
@@ -0,0 +1,3 @@
+Ce dockerfile permet de mettre un mot de passe sur la base Mongo via une variable d'environnement (contrairement au build officiel).
+
+Build le dockerfile puis créer le container grâce à runScript.sh
\ No newline at end of file
diff --git a/Databases Docker/Redis/Dockerfile b/Databases Docker/Redis/Dockerfile
new file mode 100644
index 00000000..e48598c3
--- /dev/null
+++ b/Databases Docker/Redis/Dockerfile	
@@ -0,0 +1,36 @@
+# Pull base image.
+FROM ubuntu
+MAINTAINER Grégoire Martinache <gmartina@etu.utc.fr>
+
+# Install Redis.
+RUN \
+apt-get update && \ 
+DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends apt-utils && \
+DEBIAN_FRONTEND=noninteractive apt-get upgrade -y && \
+DEBIAN_FRONTEND=noninteractive apt-get install -y wget build-essential && \ 
+cd /tmp && \
+wget http://download.redis.io/redis-stable.tar.gz && \
+tar xvzf redis-stable.tar.gz && \
+cd redis-stable && \
+make && \
+make install && \
+cp -f src/redis-sentinel /usr/local/bin && \
+mkdir -p /etc/redis && \
+cp -f *.conf /etc/redis && \
+rm -rf /tmp/redis-stable* && \
+sed -i 's/^\(bind .*\)$/# \1/' /etc/redis/redis.conf && \
+sed -i 's/^\(daemonize .*\)$/# \1/' /etc/redis/redis.conf && \
+sed -i 's/^\(dir .*\)$/# \1\ndir \/data/' /etc/redis/redis.conf && \
+sed -i 's/^\(logfile .*\)$/# \1/' /etc/redis/redis.conf
+
+# Define mountable directories.
+VOLUME ["/data"]
+
+# Define working directory.
+WORKDIR /data
+
+# Define default command.
+CMD ["redis-server", "/etc/redis/redis.conf"]
+
+# Expose ports.
+EXPOSE 6379
diff --git a/Databases Docker/Redis/Dockerfile~ b/Databases Docker/Redis/Dockerfile~
new file mode 100644
index 00000000..fcec0209
--- /dev/null
+++ b/Databases Docker/Redis/Dockerfile~	
@@ -0,0 +1,41 @@
+#
+# Redis Dockerfile
+#
+# https://github.com/dockerfile/redis
+#
+
+# Pull base image.
+FROM ubuntu
+
+# Install Redis.
+RUN \
+apt-get update && \ 
+DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends apt-utils && \
+DEBIAN_FRONTEND=noninteractive apt-get upgrade -y && \
+DEBIAN_FRONTEND=noninteractive apt-get install -y wget build-essential && \ 
+cd /tmp && \
+wget http://download.redis.io/redis-stable.tar.gz && \
+tar xvzf redis-stable.tar.gz && \
+cd redis-stable && \
+make && \
+make install && \
+cp -f src/redis-sentinel /usr/local/bin && \
+mkdir -p /etc/redis && \
+cp -f *.conf /etc/redis && \
+rm -rf /tmp/redis-stable* && \
+sed -i 's/^\(bind .*\)$/# \1/' /etc/redis/redis.conf && \
+sed -i 's/^\(daemonize .*\)$/# \1/' /etc/redis/redis.conf && \
+sed -i 's/^\(dir .*\)$/# \1\ndir \/data/' /etc/redis/redis.conf && \
+sed -i 's/^\(logfile .*\)$/# \1/' /etc/redis/redis.conf
+
+# Define mountable directories.
+VOLUME ["/data"]
+
+# Define working directory.
+WORKDIR /data
+
+# Define default command.
+CMD ["redis-server", "/etc/redis/redis.conf"]
+
+# Expose ports.
+EXPOSE 6379
diff --git a/Databases Docker/Redis/README b/Databases Docker/Redis/README
new file mode 100644
index 00000000..b71330b8
--- /dev/null
+++ b/Databases Docker/Redis/README	
@@ -0,0 +1 @@
+Build then run runScript.sh
\ No newline at end of file
diff --git a/Databases Docker/Redis/README~ b/Databases Docker/Redis/README~
new file mode 100644
index 00000000..91c07f7e
--- /dev/null
+++ b/Databases Docker/Redis/README~	
@@ -0,0 +1,2 @@
+Launch build.sh
+Launch make.sh
diff --git a/Databases Docker/Redis/runScript.sh b/Databases Docker/Redis/runScript.sh
new file mode 100755
index 00000000..34bc276e
--- /dev/null
+++ b/Databases Docker/Redis/runScript.sh	
@@ -0,0 +1,2 @@
+docker pull redis
+docker run -d -p 6379:6379 -v ~/PATH/TO/FOLDER:/data --name redis dockerfile/redis redis-server /etc/redis/redis.conf --requirepass PASSWORDHERE
diff --git a/Databases Docker/Redis/runScript.sh~ b/Databases Docker/Redis/runScript.sh~
new file mode 100755
index 00000000..3b9775a2
--- /dev/null
+++ b/Databases Docker/Redis/runScript.sh~	
@@ -0,0 +1,2 @@
+docker pull redis
+docker run -d -p 6379:6379 -v /root/redis/data:/data --name redisLatex dockerfile/redislatex redis-server /etc/redis/redis.conf --requirepass iBzVUEOSh0r0j1Gmnfgm
diff --git a/Databases Docker/runScript.sh~ b/Databases Docker/runScript.sh~
new file mode 100755
index 00000000..97188bff
--- /dev/null
+++ b/Databases Docker/runScript.sh~	
@@ -0,0 +1 @@
+docker run -v /root/mongo/data:/data/db -d --name mongoLatex -p 27017:27017 -p 28017:28017 -e MONGODB_USER="admin" -e MONGODB_DATABASE="sharelatex" -e MONGODB_PASS="KUhaBqf6582Nnwopm7Kp" dockerfile/mongodb
-- 
GitLab