-
-
Save t-io/8337368 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Deploying Django on Dokku | |
========================= | |
This Gist: http://is.gd/dokkudjango | |
DigitalOcean: https://www.digitalocean.com/ | |
Dokku: https://github.com/progrium/dokku | |
Dokku-Postgres: https://github.com/Kloadut/dokku-pg-plugin | |
Deploy a Droplet on DigitalOcean | |
-------------------------------- | |
Add an SSH key to DigitalOcean before hand to make SSHing into you new box easier and more secure. | |
1. Click "Create" | |
2. Enter hostname, select size and region | |
3. Select Ubuntu 13.04 x64 as the Image | |
4. Select your SSH key | |
5. Click "Create Droplet" | |
Setup DNS | |
--------- | |
1. Add a blank A Record pointing to the IP Address of your new Droplet | |
2. Add a wildcard (*) A Record pointing to the same domain to capture all of the subdomains. | |
Install Dokku | |
------------- | |
1. SSH into your Droplet. Just `ssh [email protected]` should work if you add an SSH Key. If not, DigitalOcean emailed you a root password. | |
2. Copy and Paste and oneline installer from the [Dokku Repo](https://github.com/progrium/dokku) README. Something like this `wget -qO- https://raw.github.com/progrium/dokku/master/bootstrap.sh | sudo bash` | |
3. Wait 5 minutes. | |
4. Associate an SSH key with a git user as the installer instruct you to. Something like this `cat ~/.ssh/id_rsa.pub | ssh [email protected] "gitreceive upload-key alex"` | |
5. Add domain to `VHOST` | |
```bash | |
cd /home/git | |
echo yourdomain.com >> VHOST | |
``` | |
Install Dokku Postgres Plugin | |
----------------------------- | |
Install the Postres Plugin. From inside your Droplet: | |
```bash | |
cd /var/lib/dokku/plugins | |
git clone https://github.com/Kloadut/dokku-pg-plugin | |
dokku plugins-install | |
``` | |
Create a new container which contains Postgres. We are going to deploy our Django app to this container in the future. | |
```bash | |
dokku postgresql:create myapp | |
``` | |
Deploy a Django App | |
------------------- | |
Dokku uses Heroku's BuildPack system for deploying applications. Refer to [Heroku's Django Docs](https://devcenter.heroku.com/articles/django) to figure out how to prepare your app for deployment. This is mainly concerned with Database connection configuration, WSGI configuration and static file serving. | |
I made a quick Django base project based on Heroku's documentation. You can get it [here](https://github.com/alextucker/djangoheroku) | |
Add a new git remote to your project pointed at your new Postgres container on your Dokku instance then push to it. | |
```bash | |
git remote add dokku [email protected]:myapp | |
git push dokku master | |
``` | |
### OMG! You can now visit your app! | |
Running manage.py commands | |
-------------------------- | |
This is the only hacky part of the process. From inside your Droplet, lets a terminal session inside our container | |
```bash | |
docker images # See a listing of all of your docker images | |
docker run -i -t app/myapp /bin/bash # Start an interactive terminal inside of your container | |
``` | |
Now we need to bootstrap our terminal session with all of the correct paths and environment variables. | |
```bash | |
export HOME=/app | |
for file in /app/.profile.d/*; do source $file; done | |
hash -r | |
cd /app # This is the folder where django app got deployed | |
``` | |
Now you can run your manage.py commands | |
```bash | |
python manage.py syncdb | |
``` |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment