summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSacheendra Talluri <sacheendra.t@gmail.com>2017-01-26 18:42:38 +0100
committerSacheendra Talluri <sacheendra.t@gmail.com>2017-01-26 18:42:38 +0100
commit01410021a7fe733edab64d7cb4b359685d89cd91 (patch)
treef54256b95068df3f62b913d5b04cab61d56c549c
parent8b123384237a40801a621a1df6c094562eee52c1 (diff)
Add Dockerfile and related build files
-rw-r--r--.dockerignore0
-rw-r--r--.gitignore1
-rw-r--r--Dockerfile33
-rwxr-xr-xbuild/configure.sh34
-rw-r--r--build/frontend_config.json3
-rw-r--r--build/keys.json7
-rw-r--r--build/supervisord.conf16
7 files changed, 94 insertions, 0 deletions
diff --git a/.dockerignore b/.dockerignore
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/.dockerignore
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 00000000..496ee2ca
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+.DS_Store \ No newline at end of file
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 00000000..ad17f041
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,33 @@
+FROM node:7.4
+MAINTAINER Sacheendra Talluri <sacheendra.t@gmail.com>
+
+# Installing python, yarn, gulp and web-server dependencies
+RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - \
+ && echo "deb http://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list \
+ && echo "deb http://ftp.debian.org/debian stretch main" >> /etc/apt/sources.list \
+ && apt-get update \
+ && apt-get -y -t stretch install gcc-6 g++-6 \
+ && apt-get install -y python python-pip yarn git sqlite3 sed supervisor \
+ && pip install oauth2client eventlet flask-socketio \
+ && npm install -g gulp-cli \
+ && rm -rf /var/lib/apt/lists/*
+
+# Copy opendc
+COPY ./ /opendc
+
+# Setting up simulator
+RUN mkdir -p /data/database \
+ && chmod 555 /opendc/build/configure.sh \
+ && cd /opendc/opendc-simulator/Simulator \
+ && rm -f ./simulator ./sqlite3.o \
+ && make \
+ && chmod 555 ./simulator \
+ && git config --global url."https://".insteadOf git:// #needed for gulp to work \
+ && cd /opendc/opendc-frontend \
+ && rm -rf /opendc/opendc-frontend/build \
+ && yarn \
+ && gulp --config=../build/frontend_config.json
+
+CMD ["sh", "-c", "cd /opendc && ./build/configure.sh /data/database && /usr/bin/supervisord -c /opendc/build/supervisord.conf"]
+
+VOLUME ["/data/database"] \ No newline at end of file
diff --git a/build/configure.sh b/build/configure.sh
new file mode 100755
index 00000000..75a61e7d
--- /dev/null
+++ b/build/configure.sh
@@ -0,0 +1,34 @@
+if [ ! -f "$1/opendc.db" ]; then
+ sqlite3 "$1/opendc.db" < ./database/schema.sql
+ sqlite3 "$1/opendc.db" < ./database/test.sql
+fi
+
+if [ -z "$OAUTH_CLIENT_ID" ]
+then
+ echo "OAuth client id not found. Define environment variable OAUTH_CLIENT_ID"
+ exit 1
+fi
+
+if [ -z "$OAUTH_CLIENT_SECRET" ]
+then
+ echo "OAuth client secret not found. Define environment variable OAUTH_CLIENT_SECRET"
+ exit 2
+fi
+
+if [ -z "$SERVER_URL" ]
+then
+ echo "URL of server not found. Define environment variable SERVER_URL"
+ exit 2
+fi
+
+sed -i "s/client-id/$OAUTH_CLIENT_ID/g" ./build/keys.json
+sed -i "s/client-secret/$OAUTH_CLIENT_SECRET/g" ./build/keys.json
+
+# ignore non ASCII characters
+LC_CTYPE=C
+LANG=C
+
+find ./opendc-frontend/build -type f -exec sed -i "s/the-google-oauth-client-id/$OAUTH_CLIENT_ID/g" {} \;
+find ./opendc-frontend/build -type f -exec sed -i "s,https://opendc.ewi.tudelft.nl:443,$SERVER_URL,g" {} \;
+find ./opendc-frontend/build -type f -exec sed -i "s,https://opendc.ewi.tudelft.nl,$SERVER_URL,g" {} \;
+find ./opendc-frontend/build -type f -exec sed -i 's,LOCAL_MODE = (document.location.hostname === "localhost"),LOCAL_MODE = false,g' {} \; \ No newline at end of file
diff --git a/build/frontend_config.json b/build/frontend_config.json
new file mode 100644
index 00000000..bdaede00
--- /dev/null
+++ b/build/frontend_config.json
@@ -0,0 +1,3 @@
+{
+ "GOOGLE_OAUTH_CLIENT_ID": "the-google-oauth-client-id"
+} \ No newline at end of file
diff --git a/build/keys.json b/build/keys.json
new file mode 100644
index 00000000..6af01a9c
--- /dev/null
+++ b/build/keys.json
@@ -0,0 +1,7 @@
+{
+ "OAUTH_CLIENT_ID": "client-id",
+ "OAUTH_CLIENT_SECRET": "client-secret",
+ "ROOT_DIR": "/opendc",
+ "FLASK_SECRET": "This is a super duper secret flask key",
+ "DATABASE_LOCATION": "/data/database/opendc.db"
+} \ No newline at end of file
diff --git a/build/supervisord.conf b/build/supervisord.conf
new file mode 100644
index 00000000..534eda29
--- /dev/null
+++ b/build/supervisord.conf
@@ -0,0 +1,16 @@
+[supervisord]
+nodaemon=true
+
+[program:web-server]
+command=/usr/bin/python2.7 /opendc/opendc-web-server/main.py /opendc/build/keys.json
+stdout_logfile=/dev/stdout
+stdout_logfile_maxbytes=0
+stderr_logfile=/dev/stderr
+stderr_logfile_maxbytes=0
+
+[program:simulator]
+command=/bin/sh -c '/opendc/opendc-simulator/Simulator/simulator /data/database/opendc.db'
+stdout_logfile=/dev/stdout
+stdout_logfile_maxbytes=0
+stderr_logfile=/dev/stderr
+stderr_logfile_maxbytes=0 \ No newline at end of file