diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 000000000..94e3bbf26 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,6 @@ +.git +.dockerignore +.env +env +venv + diff --git a/.sampleenv b/.sampleenv index a31ec1fa0..4f141eadf 100644 --- a/.sampleenv +++ b/.sampleenv @@ -1,13 +1,15 @@ # Django settings SECRET_KEY=dUmMy_s3cR3t_k3y -#DB_ENGINE=mysql -#DB_NAME=yaksh -#DB_USER=root -#DB_PASSWORD=root -#DB_HOST=yaksh-db -#DB_PORT=3306 +DEBUG=TRUE +#ALLOWED_URLS= +DB_ENGINE=mysql +DB_NAME=yaksh +DB_USER=root +DB_PASSWORD=root +DB_HOST=yaksh-db +DB_PORT=3306 # Yaksh settings N_CODE_SERVERS=5 -#SERVER_POOL_PORT=53579 +SERVER_POOL_PORT=55555 #SERVER_HOST_NAME=http://yaksh-codeserver #SERVER_TIMEOUT=4 diff --git a/docker/Dockerfile_codeserver b/docker/Dockerfile_codeserver index 1f030d51f..82a2fcaf7 100644 --- a/docker/Dockerfile_codeserver +++ b/docker/Dockerfile_codeserver @@ -1,20 +1,22 @@ -FROM ubuntu:16.04 +FROM centos:latest MAINTAINER FOSSEE -RUN apt-get update && \ -apt-get install git python3-pip libmysqlclient-dev sudo default-jre default-jdk -y +RUN yum update -y && \ +yum install git python3-pip mariadb-devel sudo java-1.8.0-openjdk java-1.8.0-openjdk-devel gcc make python3-devel -y -VOLUME /Sites/online_test +RUN mkdir -p /Sites/online_test -ADD Files/requirements-* /tmp/ +COPY . /Sites/online_test -RUN pip3 install -r /tmp/requirements-codeserver.txt && mkdir -p /Sites/online_test/yaksh_data/output /Sites/online_test/yaksh_data/data +RUN pip3 install -r /Sites/online_test/requirements/requirements-codeserver.txt + +COPY docker/Files/Start-codeserver.sh /Sites WORKDIR /Sites/online_test -ADD Files/Start-codeserver.sh /Sites +RUN mkdir -p yaksh_data/output yaksh_data/data -EXPOSE 53579 +EXPOSE 55555 CMD [ "/bin/bash" , "/Sites/Start-codeserver.sh" ] diff --git a/docker/Dockerfile_django b/docker/Dockerfile_django index daddc453b..c17c947cd 100644 --- a/docker/Dockerfile_django +++ b/docker/Dockerfile_django @@ -1,23 +1,25 @@ -FROM ubuntu:16.04 +FROM centos:latest MAINTAINER FOSSEE -RUN apt-get update -y && apt-get install git python3-pip vim libmysqlclient-dev sudo -y +RUN dnf update -y && yum install epel-release python3-devel git python3-pip vim mariadb-devel sudo -y -RUN apt-get install apache2 libapache2-mod-wsgi-py3 python3-django -y && mkdir -p /Sites/online_test +RUN yum install mod_wsgi httpd gcc make -y -VOLUME /Sites/online_test +RUN mkdir -p /Sites/online_test -ADD Files/requirements-* /tmp/ +COPY . /Sites/online_test -RUN cd /Sites/online_test && pip3 install -r /tmp/requirements-py3.txt +RUN pip3 install -r /Sites/online_test/requirements/requirements-production.txt -ADD Files/000-default.conf /etc/apache2/sites-enabled/ +COPY docker/Files/000-default.conf /etc/httpd/conf.d -ADD Files/Docker-script.sh /Sites/Docker-script.sh +COPY docker/Files/Docker-script.sh /Sites/Docker-script.sh EXPOSE 80 WORKDIR /Sites/online_test +RUN mkdir -p yaksh_data/output yaksh_data/data + CMD [ "/bin/bash" , "/Sites/Docker-script.sh" ] diff --git a/docker/Files/000-default.conf b/docker/Files/000-default.conf index 6bcb38288..d0d8cad05 100644 --- a/docker/Files/000-default.conf +++ b/docker/Files/000-default.conf @@ -13,6 +13,6 @@ Allow from all Require all granted - ErrorLog ${APACHE_LOG_DIR}/error.log - CustomLog ${APACHE_LOG_DIR}/access.log combined + ErrorLog /var/log/error.log + CustomLog /var/log/access.log combined diff --git a/docker/Files/Docker-script.sh b/docker/Files/Docker-script.sh index dc35a3fa9..7f2bfcf9a 100644 --- a/docker/Files/Docker-script.sh +++ b/docker/Files/Docker-script.sh @@ -1,7 +1,7 @@ #!/bin/bash -chown -R www-data /Sites/online_test -chown -R www-data /Sites/online_test/yaksh +chown -R apache /Sites/online_test +chown -R apache /Sites/online_test/yaksh chown -R nobody /Sites/online_test/yaksh_data chmod -R 664 /Sites/online_test chmod -R +X /Sites -/usr/sbin/apache2ctl -D FOREGROUND +/usr/sbin/httpd -D FOREGROUND diff --git a/docker/Files/Start-codeserver.sh b/docker/Files/Start-codeserver.sh index 019a31dff..b86f68805 100644 --- a/docker/Files/Start-codeserver.sh +++ b/docker/Files/Start-codeserver.sh @@ -1,6 +1,7 @@ #!/bin/bash -chown -R nobody /Sites/online_test/yaksh_data -chmod -R a+rwX yaksh_data/output -chmod -R a+rX yaksh_data/data -chmod -R o-w yaksh_data/data +#mkdir /Sites/online_test/yaksh_data && mkdir -p /Sites/online_test/yaksh_data/output /Sites/online_test/yaksh_data/data +chown -R nobody:nobody /Sites/online_test/yaksh_data +chmod -R a+rwX /Sites/online_test/yaksh_data/output +chmod -R a+rX /Sites/online_test/yaksh_data/data +chmod -R o-w /Sites/online_test/yaksh_data/data /usr/bin/sudo -su nobody python3 -m yaksh.code_server diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index 7ee3860aa..b5632757e 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -2,12 +2,12 @@ version: '2' services: yaksh-django: build: - context: . - dockerfile: Dockerfile_django + context: .. + dockerfile: docker/Dockerfile_django image: yaksh.django container_name: yaksh_django - volumes: - - ../.:/Sites/online_test + env_file: + - docker.env depends_on: - yaksh-db - yaksh-codeserver @@ -18,24 +18,25 @@ services: - 8000:80 restart: always - yaksh-codeserver: build: - context: . - dockerfile: Dockerfile_codeserver + context: .. + dockerfile: docker/Dockerfile_codeserver image: yaksh.codeserver container_name: yaksh_codeserver - volumes: - - ..:/Sites/online_test + env_file: + - docker.env restart: always - yaksh-db: image: mariadb:10.2 container_name: yaksh_db volumes: - - ./mysql:/var/lib/mysql + - mysql:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD: root MYSQL_DATABASE: yaksh restart: always + +volumes: + mysql: diff --git a/docker/docker.env b/docker/docker.env new file mode 100644 index 000000000..c92652fd8 --- /dev/null +++ b/docker/docker.env @@ -0,0 +1,15 @@ +# Django settings +SECRET_KEY=dUmMy_s3cR3t_k3y +DEBUG=TRUE +#ALLOWED_URLS=* +DB_ENGINE=mysql +DB_NAME=yaksh +DB_USER=root +DB_PASSWORD=root +DB_HOST=yaksh-db +DB_PORT=3306 +# Yaksh settings +N_CODE_SERVERS=5 +SERVER_POOL_PORT=55555 +SERVER_HOST_NAME=http://yaksh-codeserver +SERVER_TIMEOUT=4 diff --git a/online_test/settings.py b/online_test/settings.py index 565b7b7a5..fa589d273 100644 --- a/online_test/settings.py +++ b/online_test/settings.py @@ -26,9 +26,9 @@ SECRET_KEY = config('SECRET_KEY', default='dUmMy_s3cR3t_k3y') # SECURITY WARNING: don't run with debug turned on in production! -DEBUG = True +DEBUG = config('DEBUG', default='TRUE') -ALLOWED_HOSTS = [] +ALLOWED_HOSTS = config('ALLOWED_URLS', default='localhost') URL_ROOT = '' @@ -73,12 +73,10 @@ # https://docs.djangoproject.com/en/1.6/ref/settings/#databases DATABASES = { 'default': { - 'ENGINE': 'django.db.backends.{0}'.format( - config('DB_ENGINE', default='sqlite3') - ), - 'NAME': config('DB_NAME', - default=os.path.join(BASE_DIR, 'db.sqlite3') - ), + 'ENGINE': 'django.db.backends.{0}'.format(config('DB_ENGINE', + default='sqlite3')), + 'NAME': config('DB_NAME', default=os.path.join(BASE_DIR, + 'db.sqlite3')), # The following settings are not used with sqlite3: 'USER': config('DB_USER', default=''), 'PASSWORD': config('DB_PASSWORD', default=''), @@ -197,19 +195,23 @@ AUTH_PASSWORD_VALIDATORS = [ { - 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', + 'NAME': 'django.contrib.auth.password_validation.\ + UserAttributeSimilarityValidator', }, { - 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', + 'NAME': 'django.contrib.auth.password_validation.\ + MinimumLengthValidator', 'OPTIONS': { 'min_length': 8, } }, { - 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', + 'NAME': 'django.contrib.auth.password_validation.\ + CommonPasswordValidator', }, { - 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', + 'NAME': 'django.contrib.auth.password_validation.]\ + NumericPasswordValidator', }, ] @@ -230,4 +232,4 @@ } CORS_ORIGIN_ALLOW_ALL = True -CORS_ALLOW_CREDENTIALS = True \ No newline at end of file +CORS_ALLOW_CREDENTIALS = True diff --git a/requirements/requirements-production.txt b/requirements/requirements-production.txt index 3d13335c4..aaaaf2ed0 100644 --- a/requirements/requirements-production.txt +++ b/requirements/requirements-production.txt @@ -1,2 +1,2 @@ -r requirements-common.txt -mysqlclient==1.3.9 +mysqlclient