Este documento apresenta como criar um ambiente de desenvolvimento para aplicações Django utilizando Docker e Docker Compose. Ele explica como instalar as ferramentas necessárias, criar um Dockerfile para definir a infraestrutura do projeto, configurar o docker-compose.yml para executar o projeto em containers e como executar comandos do Django no container.
2. Apresentação
● Graduado em Análise de Sistemas pela FATENE
● Programador de Sistemas de Informação Prefeitura de Fortaleza
marcelosantosadm@gmail.com
https://www.linkedin.com/in/marcelotdsantos
2
3. Python
É uma linguagem de programação criada por Guido Van Rossum
em 1991. Os objetivos do projeto da linguagem era: produtividade e
legibilidade. Em resumo, Python é uma linguagem de programação
que foi criada para produção de código bom e fácil de manter de
forma rápida.
3
https://docs.python.org/devguide/#quick-start
Quick Start
4. Testando o Python
Por meio do terminal, digite:
$ python
Isso vai abrir o python no modo iterativo, para que você pode testar
o trecho abaixo, digite o código e pressione ENTER:
>>> 5 * 5
25 // resultado da multiplicação entre os números
>>> ‘marcelo’.upper()
‘MARCELO’ // resultado da transformação da string para maiúsculo
4
5. Django
Django é um framework escrito em python, gratuito com código
aberto, muito utilizado para criação de aplicações web. Seu
ecossistema possui um conjunto de componentes que torna
produtivo o desenvolvimento de aplicações web, sendo fácil e rápida
a realização de implementações.
5
https://www.djangoproject.com/start/
Quick Start
6. Vamos de Docker, o que é?
● Processo de desenvolvimento e deploy
○ O Servidor é um Navio Carregado de Containers e cada Container possui mercadorias
○ O Docker é a ferramenta para criar e manter esses containers, ou melhor, ele fica
responsável por armazenar vários serviços de forma isolada do SO Host, como: web server,
banco de dados, aplicação e etc.
○ Seu back-end é baseado no LXC (Linux Containers), este isola processos do sistema
operacional host. Muito leve, pois não é preciso fazer emulação ou suporte a hardware.
Permite execução de sistemas linux de forma isolada, por isso o nome: Container. Utiliza o
mesmo Kernel do servidor Host, performático.
6
Get Start
https://docs.docker.com/engine/getstarted/
7. Docker Composer
O docker-compose utilizando-se do docker, torna a criação de
ambientes de desenvolvimento algo muito simples. O composer
depende do Docker (previamente instalado). Com tudo pronto,
vamos instalar o composer.
Siga as instruções de acordo com seu ambiente:
https://docs.docker.com/compose/install/
7
8. Dockerfile
Com o docker e docker-compose instalados, vamos preparar a estrutura do nosso projeto. Vamos criar
uma pasta nomeada à sua escolha, aqui chamada de django-app e dentro deste vamos criar nosso
Dockerfile (informações sobre a infra do projeto), com o seguinte conteúdo:
8
FROM python:2.7
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip install -r requirements.txt
ADD . /code/
É 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.
9. requirements.txt
Neste arquivo vamos inserir as dependências do nosso projeto, no caso vamos
utilizar o Django, sendo assim o conteúdo do arquivo será:
Django
Se nosso projeto fosse com Django e o django_restframework, então o arquivo
seria:
Django
djangorestframework
* Uma dependência abaixo da outra, simples assim!
9
10. Docker Composer
Vamos criar um arquivo, "docker-compose.yml", com a configuração abaixo:
10
web:
build: . //ponto do build, diretório que o arquivo encontra-se
command: python manage.py runserver 0.0.0.0:8000 //comando para rodar o dj
volumes:
- .:/code //pasta compartilhando código entre o container e o host
ports:
- "8000:8000" //porta onde o container e host irão se comunicar
É o arquivo de configuração do docker-compose, é composto por blocos e cada
bloco corresponde a um container, podendo eles serem "linkados", o
docker-compose utilizará esse arquivo como base para criar os conteineres
necessários, e executar tudo que foi especificado no mesmo.
Host: Nosso computador, onde temos nossa IDE preferida. :-)
11. Mão na massa
Após a realização dos procedimentos anteriores, vamos então criar nossa
aplicação django com o comando abaixo:
$ docker-compose run web django-admin.py startproject minhastarefas
Após rodar esse comando será criada a pasta minhastarefas no diretório.
11
12. Configurações no settings.py
Neste arquivo existem diversas configurações referentes ao projeto django, desde
definição de idioma, time zone, banco de dados, diretório de templates e etc. Vou
citar como exemplo a mudança do idioma de en-US para pt-BR.
LANGUAGE_CODE = 'pt-BR'
Com isso se utilizarmos o django admin, ele já ficará no idioma português do brasil.
12
13. Rodando a aplicação
Na pasta raiz do projeto, execute o comando:
$ docker-compose up
O docker-compose vai criar nosso caso o container web e startar a aplicação na porta 8000, acesse seu
http://localhost:8000 e você verá sua aplicação em execução.
13
14. Executando comandos django
Podemos executar comando do django com docker da seguinte forma:
$ docker-compose run <CONTAINER-NAME> <COMANDO-DESEJADO>
Para sincronizarmos o banco de dados da aplicação podemos fazê-lo da seguinte forma:
$ docker-compose run web ./manage.py syncdb
14
15. Obrigado à todos!
15
● Referências
https://docs.docker.com/compose/django/
https://www.djangoproject.com/
https://www.python.org/