|
| 1 | +Title: Conteinerizando suas aplicações django com docker e fig |
| 2 | +Slug: conteinerizando-suas-aplicacoes-django-com-docker-e-fig |
| 3 | +Date: 2015-01-25 13:00 |
| 4 | +Tags: django, docker, fig |
| 5 | +Author: Hudson Brendon |
| 6 | + |
| 7 | +Github: hudsonbrendon |
| 8 | +Twitter: hudsonbrendon |
| 9 | +Facebook: hudson.brendon |
| 10 | +Category: Django |
| 11 | + |
| 12 | + |
| 13 | + |
| 14 | + |
| 15 | +Se você como eu é um desenvolvedor incansável quando o assunto é automatizar ao máximo seu workflow de trabalho,este post foi feito para você. O [fig](http://www.fig.sh/) utilizando-se do docker, torna a criação de ambientes de desenvolvimento algo muito simples. |
| 16 | + |
| 17 | + |
| 18 | +#Instalação |
| 19 | + |
| 20 | +A instalação do fig é bem simples, primeiro você terá que ter o docker instalado em sua máquina, caso não tenha, siga esse [tutorial](http://hudsonbrendon.com/docker-introducao-e-aplicacao.html) onde exemplifico a instalação do mesmo de forma bem simples. Com o docker pronto, é hora de instalar o fig, essa ferramenta é um pacote python, e a forma mais simples de instalá-la é através do pip, que é o gerenciador de pacotes do python, caso não o tenha instalado em sua máquina, acesse o [site oficial](https://pip.pypa.io/en/latest/installing.html) e veja a forma mais simples para você obtê-lo. Com tudo pronto, execute no terminal. |
| 21 | + |
| 22 | +```bash |
| 23 | +$ pip install -U fig |
| 24 | +``` |
| 25 | + |
| 26 | +#Utilizando o fig com django |
| 27 | + |
| 28 | +Com o docker e o fig devidamente instalados em sua máquina, é hora de integrar o django com essa maravilhosa ferramenta, para tanto, criaremos um diretório com um nome qualquer, aqui chamado de "app", e dentro do mesmo criaremos um arquivo chamado "Dockerfile", com o seguinte conteúdo. |
| 29 | + |
| 30 | +```bash |
| 31 | +FROM python:2.7 |
| 32 | +ENV PYTHONUNBUFFERED 1 |
| 33 | +RUN mkdir /code |
| 34 | +WORKDIR /code |
| 35 | +ADD requirements.txt /code/ |
| 36 | +RUN pip install -r requirements.txt |
| 37 | +ADD . /code/ |
| 38 | +``` |
| 39 | +Em seguinda criaremos um arquivo chamado "requirements.txt", com os seguintes pacotes. |
| 40 | + |
| 41 | +```bash |
| 42 | +Django |
| 43 | +psycopg2 |
| 44 | +``` |
| 45 | +E por fim um arquivo, "fig.yml", com a configuração abaixo. |
| 46 | + |
| 47 | +```bash |
| 48 | +db: |
| 49 | + image: postgres |
| 50 | +web: |
| 51 | + build: . |
| 52 | + command: python manage.py runserver 0.0.0.0:8000 |
| 53 | + volumes: |
| 54 | + - .:/code |
| 55 | + ports: |
| 56 | + - "8000:8000" |
| 57 | + links: |
| 58 | + - db |
| 59 | +``` |
| 60 | +#Quem é quem no jogo do bicho |
| 61 | + |
| 62 | +Com os arquivos criados é hora de entender qual a função de cada um no workflow. |
| 63 | + |
| 64 | +* **Dockerfile** - É o arquivo que especifica como uma imagem no docker será criada, os pacotes que serão instalados, usuários que serão criados, portas que serão expostas, diretórios que serão compartilhados entre o host e um container, etc. Para mais informações [acesse](http://hudsonbrendon.com/docker-introducao-e-aplicacao.html). |
| 65 | + |
| 66 | +* **requirements.txt** - É um arquivo que guarda todas as dependências de um projeto python. |
| 67 | + |
| 68 | +* **fig.yml** - É o arquivo de configuração do fig, é composto por blocos e cada bloco corresponde a um container, podendo eles serem "linkados", o fig utilizará esse arquivo como base para criar os conteineres necessários, e executar tudo que foi especificado no mesmo. |
| 69 | + |
| 70 | +Com os arquivos finalizados, é hora de criar uma aplicação em django, para isso basta. |
| 71 | + |
| 72 | +```bash |
| 73 | +$ fig run web django-admin.py startproject figexample . |
| 74 | +``` |
| 75 | +E o resultado será esse: |
| 76 | + |
| 77 | +```bash |
| 78 | +$ ls |
| 79 | +Dockerfile fig.yml figexample manage.py requirements.txt |
| 80 | +``` |
| 81 | +Com a aplicação em mãos, a primeira coisa que você deve fazer é abrir o arquivo settings.py de sua aplicação, e configurar o banco de dados da mesma. Para isso no arquivo figexample/settings.py basta especificar as configurações abaixo no banco de dados. |
| 82 | + |
| 83 | +```python |
| 84 | +DATABASES = { |
| 85 | +'default': { |
| 86 | +'ENGINE': 'django.db.backends.postgresql_psycopg2', |
| 87 | +'NAME': 'postgres', |
| 88 | +'USER': 'postgres', |
| 89 | +'HOST': 'db', |
| 90 | +'PORT': 5432, |
| 91 | + } |
| 92 | +} |
| 93 | +``` |
| 94 | +Com o banco configurado é hora de subir sua aplicação, na pasta raiz do projeto use. |
| 95 | + |
| 96 | +```bash |
| 97 | +$ fig up |
| 98 | +``` |
| 99 | +O fig se encarregará de criar todos os conteineres, linkalos, e startar sua aplicação na porta 8000, acesse seu [localhost:8000](http://localhost:8000/) e você verá sua aplicação em execução. |
| 100 | + |
| 101 | + |
| 102 | +Para rodar os comandos do django, você pode fazer da seguinte forma. |
| 103 | + |
| 104 | +```bash |
| 105 | +$ fig run <bloco> <comando> |
| 106 | +``` |
| 107 | +Por exemplo. |
| 108 | + |
| 109 | +```bash |
| 110 | +$ fig run web ./manage.py syncdb |
| 111 | +``` |
| 112 | +Lembrando que esse comando sempre será o padrão. |
| 113 | + |
| 114 | +#Conclusão |
| 115 | + |
| 116 | +Como você pode ver, o fig em conjunto com o docker torna seu workflow algo extremamente simples e eficaz. O melhor disso tudo, é que, para trabalhar com esse mesmo ambiente em uma nova máquina, você apenas precisará do fig e docker instalados, acessar a rais do projeto e executar um fig up, gerando com isso,uma comodidade jamais vista. |
0 commit comments