├── .gitignore ├── LICENSE ├── README.md ├── Vagrantfile ├── backend ├── backend │ ├── __init__.py │ ├── settings.py │ ├── urls.py │ └── wsgi.py └── manage.py ├── config ├── build.sh ├── connect.sh ├── containers.sh ├── docker-base │ └── Dockerfile ├── docker-devel-backend │ └── Dockerfile ├── docker-devel-ssh │ └── Dockerfile ├── docker-devel-webserver │ └── Dockerfile ├── nginx-devel │ ├── frontend.conf │ └── nginx.conf ├── ssh_default ├── ssh_default.pub ├── startup.sh └── uwsgi-devel │ └── backend.ini └── requirements ├── base.txt ├── dev.txt └── production.txt /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | 5 | # C extensions 6 | *.so 7 | 8 | # Distribution / packaging 9 | .Python 10 | env/ 11 | bin/ 12 | build/ 13 | develop-eggs/ 14 | dist/ 15 | eggs/ 16 | lib/ 17 | lib64/ 18 | parts/ 19 | sdist/ 20 | var/ 21 | *.egg-info/ 22 | .installed.cfg 23 | *.egg 24 | 25 | # Installer logs 26 | pip-log.txt 27 | pip-delete-this-directory.txt 28 | 29 | # Unit test / coverage reports 30 | htmlcov/ 31 | .tox/ 32 | .coverage 33 | .cache 34 | nosetests.xml 35 | coverage.xml 36 | 37 | # Translations 38 | *.mo 39 | 40 | # Mr Developer 41 | .mr.developer.cfg 42 | .project 43 | .pydevproject 44 | .idea 45 | 46 | # Rope 47 | .ropeproject 48 | 49 | *.log 50 | *.pot 51 | *.DS_Store 52 | 53 | # Sphinx documentation 54 | docs/_build/ 55 | 56 | # Vagrant temp folder 57 | .vagrant 58 | 59 | # DB related 60 | db.sqlite3 61 | 62 | # Collected static files 63 | collected/ -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) [year] [fullname] 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Docker/Vagrant Quickstart by Smaato 2 | =================================== 3 | 4 | Maintained by [Roland Von Ohlen](https://github.com/RockingRolli/) and [Sumit Datta](https://github.com/brainless/) for [Smaato Inc](https://github.com/smaato/). 5 | 6 | This repository accompanies the Docker quickstart tutrial and is managed to help the reader utilize the scripts to get started with their own Docker setup. 7 | -------------------------------------------------------------------------------- /Vagrantfile: -------------------------------------------------------------------------------- 1 | # -*- mode: ruby -*- 2 | # vi: set ft=ruby : 3 | 4 | # Vagrantfile API/syntax version. Don't touch unless you know what you're doing! 5 | VAGRANTFILE_API_VERSION = "2" 6 | 7 | Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| 8 | config.vm.provider "virtualbox" do |v| 9 | v.memory = 512 10 | v.cpus = 1 11 | end 12 | 13 | config.vm.box = "ubuntu/trusty64" 14 | 15 | config.vm.network "private_network", ip: "192.168.150.150" 16 | 17 | config.vm.synced_folder ".", "/app" 18 | 19 | config.vm.provision "docker" 20 | 21 | config.vm.provision "shell", 22 | :path => "config/startup.sh", 23 | run: "always" 24 | 25 | end 26 | -------------------------------------------------------------------------------- /backend/backend/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smaato/docker-quickstart/8b8c18986551096232f2c32cdbb061e0022441ad/backend/backend/__init__.py -------------------------------------------------------------------------------- /backend/backend/settings.py: -------------------------------------------------------------------------------- 1 | """ 2 | Django settings for backend project. 3 | 4 | For more information on this file, see 5 | https://docs.djangoproject.com/en/1.7/topics/settings/ 6 | 7 | For the full list of settings and their values, see 8 | https://docs.djangoproject.com/en/1.7/ref/settings/ 9 | """ 10 | 11 | # Build paths inside the project like this: os.path.join(BASE_DIR, ...) 12 | import os 13 | BASE_DIR = os.path.dirname(os.path.dirname(__file__)) 14 | 15 | 16 | # Quick-start development settings - unsuitable for production 17 | # See https://docs.djangoproject.com/en/1.7/howto/deployment/checklist/ 18 | 19 | # SECURITY WARNING: keep the secret key used in production secret! 20 | SECRET_KEY = 'm*mk&af+!%%aot&=)a5bfnm5$u#dl=s=qnci4ce-0mn2cnu)uw' 21 | 22 | # SECURITY WARNING: don't run with debug turned on in production! 23 | DEBUG = True 24 | 25 | TEMPLATE_DEBUG = True 26 | 27 | ALLOWED_HOSTS = [] 28 | 29 | 30 | # Application definition 31 | 32 | INSTALLED_APPS = ( 33 | 'django.contrib.admin', 34 | 'django.contrib.auth', 35 | 'django.contrib.contenttypes', 36 | 'django.contrib.sessions', 37 | 'django.contrib.messages', 38 | 'django.contrib.staticfiles', 39 | ) 40 | 41 | MIDDLEWARE_CLASSES = ( 42 | 'django.contrib.sessions.middleware.SessionMiddleware', 43 | 'django.middleware.common.CommonMiddleware', 44 | 'django.middleware.csrf.CsrfViewMiddleware', 45 | 'django.contrib.auth.middleware.AuthenticationMiddleware', 46 | 'django.contrib.auth.middleware.SessionAuthenticationMiddleware', 47 | 'django.contrib.messages.middleware.MessageMiddleware', 48 | 'django.middleware.clickjacking.XFrameOptionsMiddleware', 49 | ) 50 | 51 | ROOT_URLCONF = 'backend.urls' 52 | 53 | WSGI_APPLICATION = 'backend.wsgi.application' 54 | 55 | 56 | # Database 57 | # https://docs.djangoproject.com/en/1.7/ref/settings/#databases 58 | 59 | DATABASES = { 60 | 'default': { 61 | 'ENGINE': 'django.db.backends.mysql', 62 | 'NAME': 'backend', 63 | 'HOST': 'mysqlhost', 64 | 'USER': 'root', 65 | 'PASSWORD': 'root' 66 | } 67 | } 68 | 69 | # Internationalization 70 | # https://docs.djangoproject.com/en/1.7/topics/i18n/ 71 | 72 | LANGUAGE_CODE = 'en-us' 73 | 74 | TIME_ZONE = 'UTC' 75 | 76 | USE_I18N = True 77 | 78 | USE_L10N = True 79 | 80 | USE_TZ = True 81 | 82 | 83 | # Static files (CSS, JavaScript, Images) 84 | # https://docs.djangoproject.com/en/1.7/howto/static-files/ 85 | 86 | STATIC_URL = '/static/' 87 | 88 | STATIC_ROOT = os.path.join(BASE_DIR, 'collected', 'static') -------------------------------------------------------------------------------- /backend/backend/urls.py: -------------------------------------------------------------------------------- 1 | from django.conf.urls import patterns, include, url 2 | from django.contrib import admin 3 | 4 | urlpatterns = patterns('', 5 | # Examples: 6 | # url(r'^$', 'backend.views.home', name='home'), 7 | # url(r'^blog/', include('blog.urls')), 8 | 9 | url(r'^admin/', include(admin.site.urls)), 10 | ) 11 | -------------------------------------------------------------------------------- /backend/backend/wsgi.py: -------------------------------------------------------------------------------- 1 | """ 2 | WSGI config for backend project. 3 | 4 | It exposes the WSGI callable as a module-level variable named ``application``. 5 | 6 | For more information on this file, see 7 | https://docs.djangoproject.com/en/1.7/howto/deployment/wsgi/ 8 | """ 9 | 10 | import os 11 | os.environ.setdefault("DJANGO_SETTINGS_MODULE", "backend.settings") 12 | 13 | from django.core.wsgi import get_wsgi_application 14 | application = get_wsgi_application() 15 | -------------------------------------------------------------------------------- /backend/manage.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | import os 3 | import sys 4 | 5 | if __name__ == "__main__": 6 | os.environ.setdefault("DJANGO_SETTINGS_MODULE", "backend.settings") 7 | 8 | from django.core.management import execute_from_command_line 9 | 10 | execute_from_command_line(sys.argv) 11 | -------------------------------------------------------------------------------- /config/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | source containers.sh 3 | 4 | build_base 5 | 6 | build_devel_backend 7 | 8 | build_devel_ssh 9 | 10 | build_devel_webserver 11 | -------------------------------------------------------------------------------- /config/connect.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | HOST='192.168.150.150' 3 | USER='root' 4 | PORT='22222' 5 | 6 | connect() { 7 | if [ -f ssh_key.pub ]; then 8 | echo "Using your custom SSH key" 9 | chmod 600 ssh_key 10 | ssh -q -o UserKnownHostsFile=/dev/null -p $PORT -o StrictHostKeyChecking=no -i ssh_key $USER@$HOST 11 | else 12 | echo "Using the default SSH key." 13 | chmod 600 ssh_default 14 | ssh -q -o UserKnownHostsFile=/dev/null -p $PORT -o StrictHostKeyChecking=no -i ssh_default $USER@$HOST 15 | fi 16 | } 17 | 18 | connect -------------------------------------------------------------------------------- /config/containers.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | CONFDIR='/app/config' 3 | APPDIR=`dirname $CONFDIR` 4 | REGISTRY="brainless" 5 | 6 | VER_BASE="0.1" 7 | VER_DEVEL_BACKEND="0.1" 8 | VER_DEVEL_WEBSERVER="0.1" 9 | VER_DEVEL_SSH="0.1" 10 | 11 | 12 | build() { 13 | cd $CONFDIR/docker-$1 14 | sudo docker build -t $REGISTRY/$1:$2 . 15 | 16 | rm -rf $CONFDIR/docker-$1/requirements 17 | cd $CONFDIR 18 | } 19 | 20 | #--------------------------------------------------------------------------------# 21 | # Base image that has all our needed software, but does not run anything 22 | #--------------------------------------------------------------------------------# 23 | 24 | build_base() { 25 | NAME=base 26 | VERSION=$VER_BASE 27 | 28 | mkdir -p $CONFDIR/docker-$NAME/requirements 29 | 30 | cd $APPDIR 31 | git archive --prefix=app/ HEAD | (cd $CONFDIR/docker-$NAME/requirements/ && tar xf -) 32 | 33 | build $NAME $VERSION 34 | } 35 | 36 | #--------------------------------------------------------------------------------# 37 | # Development related Docker build scripts 38 | #--------------------------------------------------------------------------------# 39 | 40 | build_devel_backend() { 41 | NAME=devel-backend 42 | VERSION=$VER_DEVEL_BACKEND 43 | 44 | sed -i 's/:VER_BASE/:'"$VER_BASE"'/g' $CONFDIR/docker-$NAME/Dockerfile 45 | build $NAME $VERSION 46 | sed -i 's/:'"$VER_BASE"'/:VER_BASE/g' $CONFDIR/docker-$NAME/Dockerfile 47 | } 48 | 49 | build_devel_webserver() { 50 | NAME=devel-webserver 51 | VERSION=$VER_DEVEL_WEBSERVER 52 | 53 | sed -i 's/:VER_BASE/:'"$VER_BASE"'/g' $CONFDIR/docker-$NAME/Dockerfile 54 | build $NAME $VERSION 55 | sed -i 's/:'"$VER_BASE"'/:VER_BASE/g' $CONFDIR/docker-$NAME/Dockerfile 56 | } 57 | 58 | build_devel_ssh() { 59 | NAME=devel-ssh 60 | VERSION=$VER_DEVEL_SSH 61 | 62 | sed -i 's/:VER_BASE/:'"$VER_BASE"'/g' $CONFDIR/docker-$NAME/Dockerfile 63 | build $NAME $VERSION 64 | sed -i 's/:'"$VER_BASE"'/:VER_BASE/g' $CONFDIR/docker-$NAME/Dockerfile 65 | } 66 | 67 | #--------------------------------------------------------------------------------# 68 | # MongoDB Docker run script 69 | #--------------------------------------------------------------------------------# 70 | 71 | run_mysqlhost() { 72 | cd $CONFDIR 73 | mkdir -p /tmp/data/db 74 | sudo docker run --name mysqlhost -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root mysql:5.5 75 | } 76 | 77 | #--------------------------------------------------------------------------------# 78 | # Development related Docker run scripts 79 | #--------------------------------------------------------------------------------# 80 | 81 | run_devel_backend() { 82 | NAME=devel-backend 83 | 84 | mkdir -p $CONFDIR/logs 85 | sudo docker run \ 86 | --link mysqlhost:mysqlhost \ 87 | -v $APPDIR:/app \ 88 | -v $CONFDIR/logs:/logs \ 89 | -d \ 90 | -h $NAME \ 91 | --name $NAME \ 92 | $REGISTRY/$NAME:$VER_DEVEL_BACKEND 93 | } 94 | 95 | run_devel_webserver() { 96 | NAME=devel-webserver 97 | 98 | sudo docker run \ 99 | --link devel-backend:devel-backend \ 100 | --volumes-from devel-backend \ 101 | --name $NAME \ 102 | -d \ 103 | -p 80:80 \ 104 | $REGISTRY/$NAME:$VER_DEVEL_WEBSERVER 105 | } 106 | 107 | run_devel_ssh() { 108 | NAME=devel-ssh 109 | 110 | sudo docker run \ 111 | --link mysqlhost:mysqlhost \ 112 | --volumes-from devel-backend \ 113 | --name $NAME \ 114 | -d \ 115 | -p 22222:22 \ 116 | -p 8000:8000 \ 117 | -h $NAME \ 118 | $REGISTRY/$NAME:$VER_DEVEL_SSH 119 | } 120 | 121 | stop_remove() { 122 | # @param $1: name of container to stop and remove 123 | if [ `sudo docker ps | grep $1 | wc -l` -ne 0 ]; then 124 | sudo docker stop $1 125 | fi 126 | if [ `sudo docker ps -a | grep $1 | wc -l` -ne 0 ]; then 127 | sudo docker rm $1 128 | fi 129 | sleep 2 130 | } -------------------------------------------------------------------------------- /config/docker-base/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM debian:jessie 2 | MAINTAINER Sumit Datta 3 | 4 | # Update package list, upgrade 5 | # Install python3-pip and virtualenv 6 | # Clean up APT when done 7 | RUN apt-get update && \ 8 | apt-get -y -q upgrade && \ 9 | apt-get install --no-install-recommends -q -y \ 10 | python \ 11 | python-pip \ 12 | mysql-client-5.5 \ 13 | uwsgi-plugin-python \ 14 | git \ 15 | openssh-server \ 16 | openssh-sftp-server \ 17 | nginx && \ 18 | apt-get clean && \ 19 | rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* 20 | 21 | ADD requirements/app /app 22 | 23 | # Install all of the dependencies of the project 24 | RUN pip install virtualenv && \ 25 | if [ ! -f /venv/bin/activate ]; then virtualenv /venv; fi && \ 26 | . /venv/bin/activate && \ 27 | apt-get update && \ 28 | apt-get install --no-install-recommends -q -y \ 29 | python-dev \ 30 | build-essential \ 31 | libmysqlclient-dev && \ 32 | pip install -r /app/requirements/production.txt && \ 33 | apt-get purge -y --auto-remove \ 34 | python-dev \ 35 | build-essential \ 36 | libmysqlclient-dev && \ 37 | apt-get clean && \ 38 | rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* && \ 39 | mkdir -p /var/log/uwsgi && \ 40 | mkdir /etc/uwsgi && \ 41 | mkdir /var/run/sshd && \ 42 | chown -R www-data:www-data /var/log/uwsgi/ && \ 43 | mkdir /root/.ssh && \ 44 | touch /root/.ssh/authorized_keys -------------------------------------------------------------------------------- /config/docker-devel-backend/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM docker_quickstart/base:VER_BASE 2 | MAINTAINER Sumit Datta 3 | 4 | ENV VENVDIR /venv 5 | 6 | ENTRYPOINT if [ ! -f $VENVDIR/bin/activate ]; then virtualenv $VENVDIR; fi && \ 7 | . $VENVDIR/bin/activate && \ 8 | pip install -r /app/requirements/dev.txt && \ 9 | python /app/backend/manage.py collectstatic --noinput && \ 10 | mysql -u root -proot -h mysqlhost -Bse "CREATE DATABASE IF NOT EXISTS backend;" && \ 11 | python /app/backend/manage.py migrate && \ 12 | ln -s /app/config/uwsgi-devel/backend.ini /etc/uwsgi/ && \ 13 | uwsgi --emperor /etc/uwsgi/ 14 | 15 | EXPOSE 9000 16 | -------------------------------------------------------------------------------- /config/docker-devel-ssh/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM docker_quickstart/base:VER_BASE 2 | MAINTAINER Sumit Datta 3 | 4 | ENTRYPOINT cat /app/config/ssh_default.pub >> /root/.ssh/authorized_keys && \ 5 | /usr/sbin/sshd -D -e -------------------------------------------------------------------------------- /config/docker-devel-webserver/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM docker_quickstart/base:VER_BASE 2 | MAINTAINER Smaato 3 | 4 | ENTRYPOINT cp /app/config/nginx-devel/nginx.conf /etc/nginx/nginx.conf && \ 5 | ln -s /app/config/nginx-devel/frontend.conf /etc/nginx/sites-enabled/ && \ 6 | rm /etc/nginx/sites-enabled/default && \ 7 | /usr/sbin/nginx -c /etc/nginx/nginx.conf 8 | -------------------------------------------------------------------------------- /config/nginx-devel/frontend.conf: -------------------------------------------------------------------------------- 1 | server { 2 | listen 80; 3 | server_name devel-webserver; 4 | 5 | access_log /logs/devel-webserver.log; 6 | error_log /logs/error.devel-webserver.log; 7 | 8 | # Max upload size 9 | client_max_body_size 75M; 10 | 11 | location /static/ { 12 | alias /app/backend/collected/static/; 13 | } 14 | 15 | location / { 16 | include uwsgi_params; 17 | uwsgi_pass devel-backend:9000; 18 | } 19 | } -------------------------------------------------------------------------------- /config/nginx-devel/nginx.conf: -------------------------------------------------------------------------------- 1 | user www-data; 2 | worker_processes 4; 3 | pid /run/nginx.pid; 4 | daemon off; 5 | 6 | events { 7 | worker_connections 768; 8 | # multi_accept on; 9 | } 10 | 11 | http { 12 | 13 | # Basic Settings 14 | 15 | sendfile off; 16 | tcp_nopush on; 17 | tcp_nodelay on; 18 | keepalive_timeout 65; 19 | types_hash_max_size 2048; 20 | 21 | include /etc/nginx/mime.types; 22 | default_type application/octet-stream; 23 | 24 | # Gzip Settings 25 | 26 | gzip on; 27 | gzip_disable "msie6"; 28 | 29 | map $http_upgrade $connection_upgrade { 30 | default upgrade; 31 | '' close; 32 | } 33 | 34 | # Virtual Host Configs 35 | include /etc/nginx/conf.d/*.conf; 36 | include /etc/nginx/sites-enabled/*; 37 | } -------------------------------------------------------------------------------- /config/ssh_default: -------------------------------------------------------------------------------- 1 | -----BEGIN RSA PRIVATE KEY----- 2 | MIIEpAIBAAKCAQEA0yIxq6Y1n0653h6zAE6ZMo7JSZcDCIZOXQg8R3Pby1I/FMid 3 | WJYnjfx4Ai3T5P+ox7Xp+I/wk2Wcv7l+kW7l6K08mmlBjE+SyjvdFSfWvYj0+xR1 4 | WqND4E1YLZmM/iaQSj8WS1zAYSsf5bgsfdG8FpM8AX1VbXENTQx7drFmTFElYRCw 5 | 3ePjuaJizJ0iA7ZaFldy+AlgUYGd4tPxTvzrkRWdcV+DileGhhHx6rEtmVlIlcY1 6 | REoLFX8mVaxbWkttBpuXSyExQmPsrtMLu2XRCLcMZ9xucBpAwcU0LtemG61CU91K 7 | 2S2SHwfkaNaORNwK15XBkMP9sbccBJ/hxDOz6wIDAQABAoIBAQCShkaGY2EPYClp 8 | 11BOxD1ZcvKKmbzHK74ynkaHKAa/giK5H8ji88Ibrbzzdi553FubzcnEcNB62qf/ 9 | /pGyCI6R/bfzSVzuLUMoCoeR6QYEn4m0viv7bRbsEYFClC/fKZA1lra4MnRoeu82 10 | E6z83JN171RTjFG/FBgxApqkctUV3G7fa9pJtvkVuJcwRkJxVSFLMKjLLVosym83 11 | qrYkhg3M0isHJAWRH1VNhDBhAmLuQpKfx5e2T0zpFXdSPI8HV5LtMR33LknmUdEt 12 | VeMVe+rBQ1mKiY5JLP6GOpVz42Tqvo59pi32VS4bOhkUB9nc7pdKq2E92S8sPTs1 13 | yc7S+/iRAoGBAP5Z8jORaJQANlmoTuCBK3Uiv6jnHaCGBYbzusaTLETq7+hk5yKm 14 | 6HfsSO73vKpkjRUV3G6NZYh+qYfJI/qZkZ9Z49Ld/kO8cRe/qJKG2g4exEzh9qIK 15 | LwUTAcIJQENvFCyfhLSdPWu/8SRTz9hFUGPftYvD+PsDED4oqzPfs4SdAoGBANSA 16 | iQG4On/MxmRjSBU59WJJk2BoLLT28gI7Pg7PEFHjfOroNHLTcYrgHJ6M8wbjq3i0 17 | +nk4bGw1LRXjYfj2Rd0uy2eTQ11wW91CEbdtZoKMv9DnoGHEC1zlUiTaLLJIy2uH 18 | OTFVPOND1YNcLYD70RuemjmCCBM2B1UrJPr//IAnAoGBAM8Zib43XYF0ksx54I+o 19 | XSwpOQlb9aGovoNdnOznFJqg+OqujgyG/q32tIPvL61F5iIPBMb3Vn7HM16ehi8c 20 | L5giZwBhRRD+NM9zfNyh9JaespMvQdQ6moJ1MW8+fRbrMPAMis9NYJ+FT+GWZJvi 21 | BEzt8DJ3RRmNKwKRtqSsNs15AoGAOIunaWS7dExqMkZU5QkSKcBITiwKUXEwvrVC 22 | 8y/YOOIe2GdHpZJsMTcnhm0dMiUc+La3u8/u0fBoed2SsWve9VdBWuNN1qxSVZMC 23 | IdwjnfOUCyPHgpxnJaYD8Lh5kktajddiuaTj2dmwFA9QMHVRlFbk1Q6r1WjYFKqx 24 | YXUCnJsCgYAoKNJvoQ7jErgRwNOnV0z5PkVkpL0IkMdeVVcqENVzDC/uaAHe0CPv 25 | ohcAqHW1Pc/sj7KiNEeTBMhrB15NU5DyLit7BG4w0+WOqjga4apJ1gYq+HuILiGr 26 | 3n/cBREpAaFzOavCQiRG3oPfJJLEjy2I/6thirKoc+j8Z1S421JGhw== 27 | -----END RSA PRIVATE KEY----- 28 | -------------------------------------------------------------------------------- /config/ssh_default.pub: -------------------------------------------------------------------------------- 1 | ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDTIjGrpjWfTrneHrMATpkyjslJlwMIhk5dCDxHc9vLUj8UyJ1YlieN/HgCLdPk/6jHten4j/CTZZy/uX6RbuXorTyaaUGMT5LKO90VJ9a9iPT7FHVao0PgTVgtmYz+JpBKPxZLXMBhKx/luCx90bwWkzwBfVVtcQ1NDHt2sWZMUSVhELDd4+O5omLMnSIDtloWV3L4CWBRgZ3i0/FO/OuRFZ1xX4OKV4aGEfHqsS2ZWUiVxjVESgsVfyZVrFtaS20Gm5dLITFCY+yu0wu7ZdEItwxn3G5wGkDBxTQu16YbrUJT3UrZLZIfB+Ro1o5E3ArXlcGQw/2xtxwEn+HEM7Pr brainless@brainless-desktop 2 | -------------------------------------------------------------------------------- /config/startup.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | CONFDIR='/app/config' 3 | 4 | source $CONFDIR/containers.sh 5 | 6 | stop_remove mysqlhost 7 | run_mysqlhost 8 | 9 | stop_remove devel-backend 10 | run_devel_backend 11 | 12 | stop_remove devel-ssh 13 | run_devel_ssh 14 | 15 | stop_remove devel-webserver 16 | run_devel_webserver 17 | -------------------------------------------------------------------------------- /config/uwsgi-devel/backend.ini: -------------------------------------------------------------------------------- 1 | [uwsgi] 2 | plugin = python 3 | pyhome = /venv 4 | socket = 0.0.0.0:9000 5 | chdir = /app/backend 6 | env = DJANGO_SETTINGS_MODULE=backend.settings 7 | module = backend.wsgi 8 | need-app = true 9 | py-autoreload = 3 10 | logto = /logs/uwsgi.log 11 | master = true -------------------------------------------------------------------------------- /requirements/base.txt: -------------------------------------------------------------------------------- 1 | MySQL-python 2 | Django -------------------------------------------------------------------------------- /requirements/dev.txt: -------------------------------------------------------------------------------- 1 | -r base.txt 2 | tox 3 | ipython -------------------------------------------------------------------------------- /requirements/production.txt: -------------------------------------------------------------------------------- 1 | -r base.txt --------------------------------------------------------------------------------