- Docker
- Docker compose
Primeiro, copie o .env-example
para .env
e edite o arquivo caso necessário.
Para subir todos os serviços necessários, execute docker compose up -d
na
raiz do projeto. A primeira vez que o comando for executado irá demorar alguns
minutos, dado que o docker compose
precisará baixar algumas imagens e gerar a
image do serviço web
.
Quando tudo estiver rodando você poderá acompanhar os logs com docker compose logs -t
e quando todos os serviços tiverem subido, basta acessar
localhost:5000.
Para criar a estrutura dos modelos no banco de dados, execute o bash
dentro
do container web
com docker compose exec web bash
e, dentro do container,
execute:
python manage.py migrate
Para criar o usuário administrativo:
python manage.py createsuperuser
É necessário fazer a autenticação por 2 fatores no Telegram na primeira vez (o
arquivo de sessão ficará salvo em settings.DATA_DIR
e será reutilizado nas
outras vezes que o programa rodar). Para isso, execute manualmente qualquer um
dos comandos import_telegram
e responda com o telefone e o código.
Caso seja necessário refazer a imagem do container web
(por ter adicionado
alguma dependência de sistema ou Python), basta executar:
docker compose stop web
docker compose rm -f web
docker compose build web # em alguns casos, `--no-cache` pode ajudar
docker compose start web
Para criar um backup da base de dados PostgreSQL local, execute dentro do container web
:
# Para executar o bash no container, rode: docker compose exec web bash
pg_dump -F c -d $DATABASE_URL -f "metamemo-$(date +'%Y-%m-%d').dump"
Para restaurar usando o arquivo YYYY-MM-DD-metamemo.dump
, execute dentro do container web
:
# Para executar o bash no container, rode: docker compose exec web bash
pg_restore -d $DATABASE_URL YYY-MM-DD-metamemo.dump
-
Entre em
http://storage:9001/
-
Logue como
admin / admin123
-
Crie um bucket chamado
metamemo
-
Clique no bucked e mude a privacidade para
public
-
Acesse o container web com
docker compose exec web bash
- Execute o comando
./copy-media.sh 843356903808399_337035443_6190.xxoh00_AfDEN0TNPa5N1nZYOpjUVWCfgssHMWaqKMSxyT3YCXcjZAoe641F459F
Assim conseguimos copiar as mídias que precisarmos em desenvolvimento.
Ainda no container web executamos
echo "SELECT media FROM metamemoapp_memomedia WHERE media IS NOT NULL AND media <> '' ORDER BY id DESC LIMIT 10" | psql $DATABASE_URL | grep --color=no media/ | while read filename; do filename=$(basename $filename); ./copy-media.sh $filename; done
Aqui limitamos para 10 arquivos para poupar espaço na máquina de desenvolvimento mas isso pode ser alterado de acordo com as necessidades.
Também é possível especificar apenas arquivos do tipo .jpg
ou qualquer outras extensões necessárias, por exemplo, alterando no WHERE AND media ILIKE '%.jpg'
. Como segundo argumento é possível enviar o nome da pasta que vai ser gerada e feito o salvamento do arquivo definido, desse modo podemos baixar conteúdo da timeline
por exemplo.
Acesse deploy.md.