O projeto e todos os serviços necessários (como bancos de dados) rodam completamente dentro de containers Docker. Para rodá-lo localmente, você precisa ter instalado em seu computador:
Existem outras formas de rodar o projeto localmente, como executando o Django na própria máquina (fora de um container), porém recomendamos utilizar containers para simplificar o processo e evitar conflitos de versões.
Para começar, faça um clone local do repositório original:
git clone https://github.com/turicas/brasil.io
Entre no repositório e suba os containers pelo docker compose:
cd brasil.io
docker compose -p brasil.io -f compose.yml up -d
O processo acima deve demorar em torno de 10 minutos para executar, pois irá construir a imagem Docker que executará o Django e baixará as demais imagens/dependências. Quando finalizar, faça as migrações de dados iniciais executando:
docker compose -p brasil.io -f compose.yml exec web python manage.py migrate
docker compose -p brasil.io -f compose.yml exec web python manage.py update_data
docker compose -p brasil.io -f compose.yml run web python manage.py createsuperuser
Pronto! A plataforma poderá ser acessada pelo seu navegador Web em localhost:4200.
Caso termine de trabalhar no projeto e queira parar os serviços, execute:
docker compose -p brasil.io -f compose.yml down
Nas próximas vezes que for trabalhar no projeto, basta executar um comando:
docker compose -p brasil.io -f compose.yml up -d
- Caso não queira executar o
docker compose
com todos os parâmetros acima, utilize o atalhocompose
definido no script.activate
. - O banco de dados principal (PostgreSQL) foi configurado para ser executado
em um computador com 8 cores, 16GB de RAM e SSD. Caso esse não seja seu
computador, considere alterar o arquivo
docker/postgresql/postgresql.conf
(você precisará reiniciar o serviçodb
do docker compose). Para saber as melhores configurações para sua máquina, consulte o PgTune.
Antes de importar dados em um dataset, você precisa executar o script de
importação de dados ou baixar os dados já convertidos. Nesse exemplo, vamos
baixar 3 tabelas do dataset covid19 para
a pasta docker/data/web/
e executar o comando de importação para cada uma
delas.
Antes, abra o shell do container web
executando docker compose exec web bash
. Depois, execute dentro do container
os comandos abaixo:
for table in boletim caso caso_full obito_cartorio; do
wget \
-O "/data/${table}.csv.gz" \
"https://data.brasil.io/dataset/covid19/${table}.csv.gz"
python manage.py import_data \
--unlogged \
--no-input \
covid19 \
"$table" \
"/data/${table}.csv.gz"
done
Nota: a opção
--unlogged
do comandoimport_data
executará a importação mais rapidamente, mas fará com que a tabela possa ser perdida caso os dados do PostgreSQL sejam corrompidos (e também não será replicada, caso existam réplicas configuradas). Em geral, para ambientes de desenvolvimento, essas questões não são problemas.
- Crie um fork do projeto em sua conta no GitHub, clicando no botão "fork" em https://github.com/turicas/brasil.io
- Caso já tenha clonado o repositório original localmente, adicione seu fork
como um repositório remoto com o comando:
git remote add <seu-username> https://github.com/<seu-username>/brasil.io
. - Caso ainda não tenha clonado o repositório em sua máquina, clone-o com o
comando:
git clone https://github.com/<seu-username>/brasil.io
. - Crie um branch em seu repositório local para trabalhar nas alterações que deseja, onde você executará os commits.
- Suba seu branch para seu fork com o comando
git push <seu-username> <nome-do-branch>
e crie um pull request no repositório principal.