Hudson Brendon
Publicado em:

dom 25 janeiro 2015

←Home

Conteinerizando suas aplicações django com docker e fig

Docker

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 utilizando-se do docker, torna a criação de ambientes de desenvolvimento algo muito simples.

Instalação

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 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 e veja a forma mais simples para você obtê-lo. Com tudo pronto, execute no terminal.

$ pip install -U fig

Utilizando o fig com django

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.

FROM python:2.7
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip install -r requirements.txt
ADD . /code/

Em seguinda criaremos um arquivo chamado "requirements.txt", com os seguintes pacotes.

Django
psycopg2

E por fim um arquivo, "fig.yml", com a configuração abaixo.

db:
  image: postgres
web:
  build: .
  command: python manage.py runserver 0.0.0.0:8000
  volumes:
    - .:/code
  ports:
    - "8000:8000"
  links:
  - db

Quem é quem no jogo do bicho

Com os arquivos criados é hora de entender qual a função de cada um no workflow.

  • 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.

  • requirements.txt - É um arquivo que guarda todas as dependências de um projeto python.

  • 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.

Com os arquivos finalizados, é hora de criar uma aplicação em django, para isso basta.

$ fig run web django-admin.py startproject figexample .

E o resultado será esse:

$ ls
Dockerfile       fig.yml          figexample       manage.py        requirements.txt

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.

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'postgres',
'USER': 'postgres',
'HOST': 'db',
'PORT': 5432,
  }
}

Com o banco configurado é hora de subir sua aplicação, na pasta raiz do projeto use.

$ fig up

O fig se encarregará de criar todos os conteineres, linkalos, e startar sua aplicação na porta 8000, acesse seu localhost:8000 e você verá sua aplicação em execução.

Para rodar os comandos do django, você pode fazer da seguinte forma.

$ fig run <bloco> <comando>

Por exemplo.

$ fig run web ./manage.py syncdb

Lembrando que esse comando sempre será o padrão.

Conclusão

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.

Topo
comments powered by Disqus