Skip to content

sangwonl/stage34

Folders and files

NameName
Last commit message
Last commit date
Oct 29, 2016
May 6, 2017
Nov 21, 2016
Nov 21, 2016
Sep 16, 2016
Aug 1, 2016
May 6, 2017
Nov 21, 2016
Nov 21, 2016
Nov 19, 2016
Nov 20, 2016

Repository files navigation

Stage34

Freescale Staging Environment

alt tag

Docker Container Structure

                +-------+       +--------+  +-------+  +--------+
      +---------+ Nginx +-------+ Webapp +--+ Redis +--+ Worker +---+
      |         +--+----+       +----+---+  +-------+  +--+-----+   |
      |            |  +----------+  |                     |         |
      |            |  | Frontend |  |                     | /var/run/docker.sock
      |            |  +----+-----+  |                     |         |
      |            |       |        |                     |         |
      |         +--+-------+--------+---------------------+-----+   |
+-----+-----+   |    /etc/nginx/                                |   |
|   Stage   |   |    /usr/stage34/db/                           |   |
| Container |   |    /usr/stage34/assets/                       |   |
+-----------+   |    /usr/stage34/frontend/                     |   |
                |    /usr/stage34/repo/                         |   |
                +-----------------------------------------------+   |
                |                 Volume Container              |   |
                +-----------------------------------------------+   |
                                                                    |
                +-----------------------------------------------+   |
                |                    Docker Host                +---+
                +-----------------------------------------------+

Required

  • Docker & Docker Compose
  • Python 2.7
  • npm 3.x.x
  • node 6.x.x

Prerequisite

GitHub Application

  • need to add a new github 3rd-party application and update settings.GITHUB_API with client id and secret.

Local DNS Resolving

if local test environment, it's recommended to use Dnsmasq to resolve local subdomain.

  • Mac OS X
# Install it
$ brew install dnsmasq

# Create the etc dir if needed
$ mkdir -p /usr/local/etc

# Create a simple configuration
$ echo "address=/.stage34.io/0.0.0.0" > /usr/local/etc/dnsmasq.conf

# Install the daemon startup file
$ sudo cp -fv /usr/local/opt/dnsmasq/*.plist /Library/LaunchDaemons

# Start the daemon
$ sudo launchctl load /Library/LaunchDaemons/homebrew.mxcl.dnsmasq.plist

$ sudo mkdir -p /etc/resolver
$ sudo sh -c 'echo "nameserver 0.0.0.0" > /etc/resolver/stage34.io'

$ ping sub.stage34.io
  • Ubuntu
$ sudo nano /etc/NetworkManager/NetworkManager.conf
- search for "dns=dnsmasq"
- replace with "#dns=dnsmasq"

$ sudo apt-get install dnsmasq
$ sudo nano /etc/dnsmasq.conf
- append line: "listen-address=0.0.0.0"
- append line: "bind-interfaces"
- append line: "address=/.stage34.io/0.0.0.0"

$ sudo netstat -plant | grep :53
- look for "NUMBER/dnsmasq"
$ sudo kill -9 NUMBER
- fill in the number you found for "NUMBER"

$ sudo service dnsmasq restart
$ sudo nano /etc/dhcp/dhclient.conf
- append line: "prepend domain-name-servers 0.0.0.0;"

$ sudo service network-manager restart
  • References

http://asciithoughts.com/posts/2014/02/23/setting-up-a-wildcard-dns-domain-on-mac-os-x/ https://www.leaseweb.com/labs/2013/08/wildcard-dns-ubuntu-hosts-file-using-dnsmasq/

Configuration & Build

Frontend

$ cd frontend
$ cp config.json.sample config.json
- modify API_HOST to yours

$ npm install
$ npm run build

Django Settings

$ cd webapp
$ vi main/settings/__init__.py
- modify STAGE34_HOST, STAGE34_PORT, GITHUB_API.client_id, GITHUB_API.client_secret, GITHUB_API.redirect_uri to yours

Django Migrate

$ cd webapp
$ pip install -r requirements/prod.txt
$ python manage.py migrate

Nginx Server Name

$ cd nginx
$ vi nginx/nginx.conf
- modify servername (stage34.io by default) to yours

Run

$ docker-compose up
- if you want to run entry port to 80, modify nginx publishing port in docker-compose.yml