Production cloud deployments of fig infrastructure with docker
Project description
ficloud
======
ficloud alows to deploy your fig infrastructure to remote servers . Also it
provides all the services needed for hosting production apps.
Features:
- define your app config through Dockerfile and fig.yml
- easy deploy through git push
- pushing several versions of app (dev, staging, production ... etc)
- haproxy based balancer tcp
- easy switch balancer endpoint between app versions (ex swap prod and dev)
- persistent storage for containers
- easy copying persistence storage between containers (prod -> staging, etc)
- push and pull persistent volumes from your production server
Installation
-------------
Install docker: http://docs.docker.io/en/latest/installation/
Make sure you can run docker containers::
sudo docker run -i -t ubuntu echo -e "OK";
Install packages::
sudo apt-get install python-pip python-dev
sudo pip install ficloud
Test that ficloud is working::
$ ficloud-server app-list
+-----+---------+-------+
| App | Version | State |
+-----+---------+-------+
+-----+---------+-------+
Create ficloud user (you can pick any username)::
sudo useradd -s /bin/bash -d /home/ficloud -m ficloud
sudo su ficloud
cd /home/ficloud
mkdir ~/.ssh
vim ~/.authorized_keys # insert your ssh key and ssh key of your root user into this file
chmod -R go-rwx ~/.ssh
Test you can ssh into your server using ficloud account::
ssh ficloud@yourserver.com
Make sure your root user can also access your server::
sudo ssh ficloud@yourserver.com
Add ficloud user to docker group::
sudo usermod -a -G docker ficloud
Check ficloud can run docker now::
sudo su ficloud
docker run -i -t ubuntu echo -e "\033[0;32mFicloud can run Docker - OK\033[0m";
exit
Install haproxy::
sudo apt-get install haproxy
sudo echo "ENABLED=1" | sudo tee /etc/default/haproxy
sudo service haproxy start
sudo curl https://raw.github.com/pywizard/ficloud/master/examples/haproxy.cfg.tpl | sudo tee /etc/haproxy/haproxy.cfg.tpl
Now install incron to reconfigure haproxy, when you deploy new apps::
sudo apt-get install incron
sudo echo "root" | sudo tee /etc/incron.allow
Edit incrontab file and insert lines generated by inotify-dump in incrontab file::
ficloud-server inotify-dump
/home/ficloud/apps-conf IN_MODIFY,IN_CREATE,IN_DELETE,IN_NO_LOOP /usr/local/bin/ficloud-server balancer-dump /home/ficloud/apps-conf
/etc/haproxy/haproxy.cfg.tpl IN_MODIFY,IN_CREATE,IN_DELETE,IN_NO_LOOP /usr/local/bin/ficloud-server balancer-dump /home/ficloud/apps-conf
$ sudo incrontab -e
And the last thing. Allow ficloud to read-write any docker container volume:
ficloud ALL= NOPASSWD:/usr/bin/rsync
Install git:
sudo apt-get install git
Deployement
-------------
Start by creating application that is working locally using fig.yml
Set working ssh account::
$ ficloud use ficloud@myserver.com
Create an application:
$ ficloud remote app-create foo
Deploy code:
$ git push ficloud@myserver.com:apps/foo master:prod
Check port number:
$ ficloud remote app-list
Configure balancer:
$ ficloud remote balancer set mydomain.com web:80@foo#prod
Push volume to deployment:
$ filcoud volume-push web/code@foo#master
Push volume from deployment:
$ filcoud volume-pull web/code@foo#master
Remote volume copy:
$ ficloud remote volume-copy web/code@foo#master foo#v1
Your app is deployed!
Data migration
----------------
======
ficloud alows to deploy your fig infrastructure to remote servers . Also it
provides all the services needed for hosting production apps.
Features:
- define your app config through Dockerfile and fig.yml
- easy deploy through git push
- pushing several versions of app (dev, staging, production ... etc)
- haproxy based balancer tcp
- easy switch balancer endpoint between app versions (ex swap prod and dev)
- persistent storage for containers
- easy copying persistence storage between containers (prod -> staging, etc)
- push and pull persistent volumes from your production server
Installation
-------------
Install docker: http://docs.docker.io/en/latest/installation/
Make sure you can run docker containers::
sudo docker run -i -t ubuntu echo -e "OK";
Install packages::
sudo apt-get install python-pip python-dev
sudo pip install ficloud
Test that ficloud is working::
$ ficloud-server app-list
+-----+---------+-------+
| App | Version | State |
+-----+---------+-------+
+-----+---------+-------+
Create ficloud user (you can pick any username)::
sudo useradd -s /bin/bash -d /home/ficloud -m ficloud
sudo su ficloud
cd /home/ficloud
mkdir ~/.ssh
vim ~/.authorized_keys # insert your ssh key and ssh key of your root user into this file
chmod -R go-rwx ~/.ssh
Test you can ssh into your server using ficloud account::
ssh ficloud@yourserver.com
Make sure your root user can also access your server::
sudo ssh ficloud@yourserver.com
Add ficloud user to docker group::
sudo usermod -a -G docker ficloud
Check ficloud can run docker now::
sudo su ficloud
docker run -i -t ubuntu echo -e "\033[0;32mFicloud can run Docker - OK\033[0m";
exit
Install haproxy::
sudo apt-get install haproxy
sudo echo "ENABLED=1" | sudo tee /etc/default/haproxy
sudo service haproxy start
sudo curl https://raw.github.com/pywizard/ficloud/master/examples/haproxy.cfg.tpl | sudo tee /etc/haproxy/haproxy.cfg.tpl
Now install incron to reconfigure haproxy, when you deploy new apps::
sudo apt-get install incron
sudo echo "root" | sudo tee /etc/incron.allow
Edit incrontab file and insert lines generated by inotify-dump in incrontab file::
ficloud-server inotify-dump
/home/ficloud/apps-conf IN_MODIFY,IN_CREATE,IN_DELETE,IN_NO_LOOP /usr/local/bin/ficloud-server balancer-dump /home/ficloud/apps-conf
/etc/haproxy/haproxy.cfg.tpl IN_MODIFY,IN_CREATE,IN_DELETE,IN_NO_LOOP /usr/local/bin/ficloud-server balancer-dump /home/ficloud/apps-conf
$ sudo incrontab -e
And the last thing. Allow ficloud to read-write any docker container volume:
ficloud ALL= NOPASSWD:/usr/bin/rsync
Install git:
sudo apt-get install git
Deployement
-------------
Start by creating application that is working locally using fig.yml
Set working ssh account::
$ ficloud use ficloud@myserver.com
Create an application:
$ ficloud remote app-create foo
Deploy code:
$ git push ficloud@myserver.com:apps/foo master:prod
Check port number:
$ ficloud remote app-list
Configure balancer:
$ ficloud remote balancer set mydomain.com web:80@foo#prod
Push volume to deployment:
$ filcoud volume-push web/code@foo#master
Push volume from deployment:
$ filcoud volume-pull web/code@foo#master
Remote volume copy:
$ ficloud remote volume-copy web/code@foo#master foo#v1
Your app is deployed!
Data migration
----------------
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
ficloud-0.1.13.tar.gz
(26.3 kB
view hashes)