From 0713c60a5ad4b71d4a2050d13cf30afaf37d935b Mon Sep 17 00:00:00 2001 From: rohmhatre Date: Sun, 26 Nov 2017 00:25:02 +0530 Subject: Added docker compose configuration --- docker/Dockerfile | 13 ------- docker/Dockerfile_codeserver | 19 ++++++++++ docker/Dockerfile_django | 23 ++++++++++++ docker/Files/000-default.conf | 18 ++++++++++ docker/Files/Docker-script.sh | 5 +++ docker/Files/Start-codeserver.sh | 7 ++++ docker/Files/requirements-codeserver.txt | 6 ++++ docker/Files/requirements-common.txt | 9 +++++ docker/Files/requirements-py2.txt | 2 ++ docker/Files/requirements-py3.txt | 2 ++ docker/Makefile | 61 ++++++++++++++++++++++++++++++++ docker/README.md | 30 ++++++++++++++++ docker/docker-compose.yml | 41 +++++++++++++++++++++ manage.py | 0 online_test/settings.py | 2 ++ yaksh/code_server.py | 0 yaksh/docs/sample.sh | 0 17 files changed, 225 insertions(+), 13 deletions(-) delete mode 100644 docker/Dockerfile create mode 100644 docker/Dockerfile_codeserver create mode 100644 docker/Dockerfile_django create mode 100644 docker/Files/000-default.conf create mode 100644 docker/Files/Docker-script.sh create mode 100644 docker/Files/Start-codeserver.sh create mode 100644 docker/Files/requirements-codeserver.txt create mode 100644 docker/Files/requirements-common.txt create mode 100644 docker/Files/requirements-py2.txt create mode 100644 docker/Files/requirements-py3.txt create mode 100644 docker/Makefile create mode 100644 docker/README.md create mode 100644 docker/docker-compose.yml mode change 100755 => 100644 manage.py mode change 100755 => 100644 yaksh/code_server.py mode change 100755 => 100644 yaksh/docs/sample.sh diff --git a/docker/Dockerfile b/docker/Dockerfile deleted file mode 100644 index cc0fd30..0000000 --- a/docker/Dockerfile +++ /dev/null @@ -1,13 +0,0 @@ -FROM ubuntu:16.04 - -MAINTAINER FOSSEE - -# Update Packages and Install Python & net-tools -RUN apt-get update -y && apt-get install git python3-pip vim libmysqlclient-dev sudo -y - -RUN apt-get install -y software-properties-common && \ -echo oracle-java8-installer shared/accepted-oracle-license-v1-1 select true | debconf-set-selections && \ -add-apt-repository -y ppa:webupd8team/java && \ -apt-get update && \ -apt-get install -y oracle-java8-installer && \ -apt-get install -y python net-tools scilab build-essential python3-numpy python3-scipy ipython3 ipython3-notebook python3-pandas python3-nose diff --git a/docker/Dockerfile_codeserver b/docker/Dockerfile_codeserver new file mode 100644 index 0000000..1bc93c2 --- /dev/null +++ b/docker/Dockerfile_codeserver @@ -0,0 +1,19 @@ +FROM ubuntu:16.04 + +MAINTAINER FOSSEE + +RUN apt-get update -y && apt-get install git python3-pip vim libmysqlclient-dev sudo -y + +VOLUME /Sites/online_test + +ADD Files/requirements-* /tmp/ + +RUN pip3 install -r /tmp/requirements-codeserver.txt && mkdir -p /Sites/online_test/yaksh_data/output /Sites/online_test/yaksh_data/data + +WORKDIR /Sites/online_test/yaksh_data + +ADD Files/Start-codeserver.sh /Sites + +EXPOSE 53579 + +CMD [ "/bin/bash" , "/Sites/Start-codeserver.sh" ] diff --git a/docker/Dockerfile_django b/docker/Dockerfile_django new file mode 100644 index 0000000..6b87afb --- /dev/null +++ b/docker/Dockerfile_django @@ -0,0 +1,23 @@ +FROM ubuntu:16.04 + +MAINTAINER FOSSEE + +RUN apt-get update -y && apt-get install git python3-pip vim libmysqlclient-dev sudo -y + +RUN apt-get install apache2 vim libapache2-mod-wsgi-py3 python3-django -y && mkdir -p /Sites/online_test + +VOLUME /Sites/online_test + +ADD Files/requirements-* /tmp/ + +RUN cd /Sites/online_test && pip3 install -r /tmp/requirements-py3.txt + +ADD Files/000-default.conf /etc/apache2/sites-enabled/ + +ADD Files/Docker-script.sh /Sites/Docker-script.sh + +EXPOSE 80 + +WORKDIR /Sites/online_test + +CMD [ "/bin/bash" , "/Sites/Docker-script.sh" ] diff --git a/docker/Files/000-default.conf b/docker/Files/000-default.conf new file mode 100644 index 0000000..6bcb382 --- /dev/null +++ b/docker/Files/000-default.conf @@ -0,0 +1,18 @@ + + ServerName localhost + ServerAdmin webmaster@localhost + DocumentRoot /Sites/online_test + WSGIDaemonProcess yaksh threads=5 python-path=/usr/local/lib/python3.5/dist-packages home=/Sites/online_test + WSGIScriptAlias / /Sites/online_test/online_test/wsgi.py + WSGIProcessGroup yaksh + Alias /static/ /Sites/online_test/yaksh/static/ + + WSGIProcessGroup yaksh + WSGIApplicationGroup %{GLOBAL} + Order deny,allow + Allow from all + Require all granted + + ErrorLog ${APACHE_LOG_DIR}/error.log + CustomLog ${APACHE_LOG_DIR}/access.log combined + diff --git a/docker/Files/Docker-script.sh b/docker/Files/Docker-script.sh new file mode 100644 index 0000000..752a638 --- /dev/null +++ b/docker/Files/Docker-script.sh @@ -0,0 +1,5 @@ +#!/bin/bash +chown -R www-data /Sites/online_test +chmod -R 644 /Sites/online_test +chmod -R +X /Sites +/usr/sbin/apache2ctl -D FOREGROUND diff --git a/docker/Files/Start-codeserver.sh b/docker/Files/Start-codeserver.sh new file mode 100644 index 0000000..8b6ea96 --- /dev/null +++ b/docker/Files/Start-codeserver.sh @@ -0,0 +1,7 @@ +#!/bin/bash +chown -R nobody /Sites/online_test +chmod -R a+rwX yaksh_data/output +chmod -R a+rX yaksh_data/data yaksh_data/yaksh +chmod -R o-w yaksh_data/data yaksh +chmod -R +X /Sites/online_test/ +/usr/bin/sudo -su nobody python3 -m yaksh.code_server diff --git a/docker/Files/requirements-codeserver.txt b/docker/Files/requirements-codeserver.txt new file mode 100644 index 0000000..e9585fa --- /dev/null +++ b/docker/Files/requirements-codeserver.txt @@ -0,0 +1,6 @@ +pytest +python-decouple +six +requests +tornado +psutil diff --git a/docker/Files/requirements-common.txt b/docker/Files/requirements-common.txt new file mode 100644 index 0000000..b4d2e5b --- /dev/null +++ b/docker/Files/requirements-common.txt @@ -0,0 +1,9 @@ +-r requirements-codeserver.txt +invoke==0.21.0 +django==1.9.5 +django-taggit==0.18.1 +pytz==2016.4 +python-social-auth==0.2.19 +selenium==2.53.6 +coverage +ruamel.yaml==0.15.23 \ No newline at end of file diff --git a/docker/Files/requirements-py2.txt b/docker/Files/requirements-py2.txt new file mode 100644 index 0000000..38777a1 --- /dev/null +++ b/docker/Files/requirements-py2.txt @@ -0,0 +1,2 @@ +-r requirements-common.txt +mysql-python==1.2.5 diff --git a/docker/Files/requirements-py3.txt b/docker/Files/requirements-py3.txt new file mode 100644 index 0000000..3d13335 --- /dev/null +++ b/docker/Files/requirements-py3.txt @@ -0,0 +1,2 @@ +-r requirements-common.txt +mysqlclient==1.3.9 diff --git a/docker/Makefile b/docker/Makefile new file mode 100644 index 0000000..9119601 --- /dev/null +++ b/docker/Makefile @@ -0,0 +1,61 @@ +help: + @echo "Docker Compose Help for Deploying Yaksh interface" + @echo "-----------------------\n" + @echo "Clone yaksh online interface from github :" + @echo " make clone" + @echo "" + @echo "Build docker images:" + @echo " make build" + @echo "" + @echo "To run containers:" + @echo " make start" + @echo "" + @echo "You need to create super a user to work with yaksh:" + @echo " make createsuperuser" + @echo "" + @echo "Now Your interface is ready. You can access it using browser just go to http://localhost:8000" + @echo "" + @echo "Really, really start over:" + @echo " make clean" + @echo "" + @echo "other utilities:restart,tail,status" + +begin: migrate fixtures start + +clone: + @/bin/bash clone-yaksh.sh + +start: + @docker-compose up -d + +stop: + @docker-compose stop + +status: + @docker-compose ps + +restart: stop start + +clean: stop + @docker-compose rm --force + +build: + @docker-compose build --no-cache + @docker pull mariadb:10.2 + +createsuperuser: migrate superuser + +migrate: + @docker exec -it yaksh_django python3 manage.py makemigrations + @docker exec -it yaksh_django python3 manage.py migrate + +superuser: + @docker exec -it yaksh_django python3 manage.py createsuperuser + @docker exec -it yaksh_django python3 manage.py add_group + @docker exec -it yaksh_django python3 manage.py collectstatic + @echo "You can access it using browser, just go to http://localhost:8000" + +tail: + @docker-compose logs -f + +.PHONY: start stop status restart clean build migrate tail clone superuser createsuperuser diff --git a/docker/README.md b/docker/README.md new file mode 100644 index 0000000..34e30da --- /dev/null +++ b/docker/README.md @@ -0,0 +1,30 @@ +#### Pre-Requisites + + 1. Install Docker https://docs.docker.com/engine/installation/ + 2. Install Docker Compose https://docs.docker.com/compose/install/#install-compose + 3. install git + + +#### Help for deploying Yaksh interface. + + - To get help while deployment + $ make help + + - Clone yaksh form github: + $ make clone + + - Build docker images: + $ make build + + - To run containers: + $ make start + + - You need to create super a user to work with yaksh: + $ make createsuperuser + + - Now Your interface is ready. You can access it using browser just go to http://localhost:8000 + + - Clean your docker containers: + $ make clean + + - other utilities like restart, tail, status diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml new file mode 100644 index 0000000..747cbda --- /dev/null +++ b/docker/docker-compose.yml @@ -0,0 +1,41 @@ +version: '2' +services: + yaksh-django: + build: + context: . + dockerfile: Dockerfile_django + image: yaksh.django + container_name: yaksh_django + volumes: + - ../.:/Sites/online_test + depends_on: + - yaksh-db + - yaksh-codeserver + links: + - yaksh-db + - yaksh-codeserver + ports: + - 8000:80 + restart: always + + + yaksh-codeserver: + build: + context: . + dockerfile: Dockerfile_codeserver + image: yaksh.codeserver + container_name: yaksh_codeserver + volumes: + - ../yaksh_data:/Sites/online_test/yaksh_data + restart: always + + + yaksh-db: + image: mariadb:10.2 + container_name: yaksh_db + volumes: + - ./mysql:/var/lib/mysql + environment: + MYSQL_ROOT_PASSWORD: root + MYSQL_DATABASE: yaksh + restart: always diff --git a/manage.py b/manage.py old mode 100755 new mode 100644 diff --git a/online_test/settings.py b/online_test/settings.py index e64a791..c55a056 100644 --- a/online_test/settings.py +++ b/online_test/settings.py @@ -107,6 +107,8 @@ MEDIA_URL = "/data/" MEDIA_ROOT = os.path.join(BASE_DIR, "yaksh_data", "data") +STATIC_ROOT='yaksh/static/' + # Set this varable to if smtp-server is not allowing to send email. EMAIL_USE_TLS = False diff --git a/yaksh/code_server.py b/yaksh/code_server.py old mode 100755 new mode 100644 diff --git a/yaksh/docs/sample.sh b/yaksh/docs/sample.sh old mode 100755 new mode 100644 -- cgit