DEV Community

Cover image for Como fazer deploy com Dokku na Magalu Cloud
Magalu Cloud for Magalu Cloud

Posted on

Como fazer deploy com Dokku na Magalu Cloud

Autor: Junior Carvalho (LinkedIn, Dev.to)
Repositório: python-django-example

Se você trabalha com Python/Django, já deve ter sentido o atrito que pode ser levar sua aplicação do ambiente de desenvolvimento para um servidor de produção. Você quer focar no código, mas se vê preso em um mar de configurações de servidor.

É aqui que o Dokku entra em ação, transformando um processo complicado em algo rápido e eficiente. Dokku é uma PaaS (Platform as a Service) minimalista que permite que você faça o deploy de suas aplicações via Git Push, de forma semelhante ao Heroku, mas em sua própria máquina virtual.

Este artigo apresenta um tutorial passo a passo para que você possa fazer o deploy de seu projeto Python/Django em uma máquina virtual da Magalu Cloud utilizando o Dokku. Você aprenderá a configurar o ambiente, instalar o Dokku, gerenciar chaves SSH, configurar o banco de dados PostgreSQL e as variáveis de ambiente necessárias para ter sua aplicação rodando em produção de forma elegante e descomplicada.

Pré-requisitos

  • Conta ativa na Magalu Cloud com acesso ao painel de criação de máquinas virtuais.
  • Máquina virtual criada (exemplo: BV2-2-10 com Ubuntu 24.04 LTS, 2vCPU, 2GB RAM e 10GB disco local).
  • Acesso ao terminal com SSH configurado.
  • Git instalado na máquina de desenvolvimento.
  • Projeto de exemplo em Python/Django disponível: python-django-example.

Preparando o ambiente

Nesse tutorial vamos utilizar uma máquina virtual na Magalu Cloud. Uma máquina BV2-2-10, 2vCpu, 2GB de ram e 10GB de tamanho de disco local com Ubuntu 24.04 LTS.

A documentação completa de uso na Magalu Cloud pode ser visualizada aqui: Documentação Magalu Cloud. E aqui um vídeo que mostra como criar uma máquina virtual: Como criar uma máquina virtual.

Para exemplificar, vou utilizar um projeto simples em Python, Django e django-rest-framework. Esse projeto provê apenas um endpoint ‘status’ retornando uma resposta json.

Projeto disponível aqui: python-django-example

1. Instalando o Dokku

Após criar a máquina virtual na Magalu Cloud vamos realizar o acesso via SSH pelo terminal. Vou utilizar ssh padrão de terminal, mas é possível utilizar outros clientes ssh como o Putty.

ssh ubuntu@201.23.72.173
Enter fullscreen mode Exit fullscreen mode

No primeiro acesso confirme o questionamento sobre a autenticidade digitando ‘yes’.

ED25519 key fingerprint is SHA256:tbnvJ/WRO/vbi95X7D+M0mHAZq3pIo1wI39VprSnx5Y.This key is not known by any other names.Are you sure you want to continue connecting (yes/no/[fingerprint])?
Enter fullscreen mode Exit fullscreen mode

Conforme a documentação do Dokku, use os seguintes comandos para realizar a instalação:

wget -NP . https://dokku.com/bootstrap.sh  
sudo DOKKU_TAG=v0.36.7 bash bootstrap.sh  
Enter fullscreen mode Exit fullscreen mode

2. Configurando a chave SSH

Precisamos configurar no Dokku a chave pública para que seja possível executar o deploy.

Na nossa máquina de desenvolvimento, vamos checar se nosso usuário tem uma chave pública:

ls -al ~/.ssh
Enter fullscreen mode Exit fullscreen mode

Caso não tenha nenhum arquivo .pub , pode gerar com o comando:

ssh-keygen -t rsa
Enter fullscreen mode Exit fullscreen mode

No meu caso eu tenho um id_rsa.pub. Vou ler o conteúdo, selecioná-lo e copiar:

cat ~/.ssh/id_rsa.pub  
Enter fullscreen mode Exit fullscreen mode

Com o conteúdo do arquivo copiado, vamos executar o comando na máquina remota:

echo 'CONTENTS_OF_ID_RSA_PUB_FILE' | sudo dokku ssh-keys:add admin
Enter fullscreen mode Exit fullscreen mode

Aqui, CONTENTS_OF_ID_RSA_PUB_FILE é igual a chave copiada da máquina de desenvolvimento.

Confirme se a chave foi criada com o comando:

dokku ssh-keys:list
Enter fullscreen mode Exit fullscreen mode

3. Criando a aplicação

No terminal, conectado na nossa máquina virtual:

dokku apps:create python-django-example  
Enter fullscreen mode Exit fullscreen mode

Para listar os apps existentes:

dokku apps
Enter fullscreen mode Exit fullscreen mode

Quando criamos um novo aplicativo, por padrão o Dokku não fornece nenhum banco de dados como MySQL ou PostgreSQL. É preciso instalar plugins. Existem plugins oficiais para banco de dados. Nesse exemplo vou utilizar o PostgreSQL.

PostgreSQL

Instale o plugin Postgres:

sudo dokku plugin:install https://github.com/dokku/dokku-postgres.git
Enter fullscreen mode Exit fullscreen mode

Crie o serviço postgres:

dokku postgres:create database  
Enter fullscreen mode Exit fullscreen mode

Agora, vamos criar o link entre os serviços de banco de dados e nossa app.

dokku postgres:link database python-django-example  
Enter fullscreen mode Exit fullscreen mode

Após esse comando vai ser criado automaticamente a variável DATABASE_URL em nosso app.

4. Configurando variáveis de ambiente

Temos que configurar algumas variáveis de ambiente em nosso app. Como estamos usando Django, vamos criar SECRET_KEY e DEBUG. Acesse a documentação environment-variables para mais informações.

dokku config:set python-django-example DEBUG='False'  
dokku config:set python-django-example SECRET_KEY='sua secret_key'  
dokku config:set python-django-example ALLOWED_HOSTS='127.0.0.1, .localhost,201.23.72.173'
Enter fullscreen mode Exit fullscreen mode

Observação: Precisamos adicionar o IP do servidor em ALLOWED_HOSTS, no caso do exemplo o IP é o 201.23.72.173`.

Para listar as variáveis de ambiente de nossa app: dokku config python-django-example

5. Executando o primeiro deploy

Na nossa máquina de desenvolvimento vamos configurar o git para fazer o primeiro deploy. Vamos adicionar nosso repositório remoto Dokku da seguinte forma:

git remote add dokku dokku@[IP-do-servidor]:[nome-app]

No contexto do nosso projeto de exemplo, o comando fica:

git remote add dokku dokku@201.23.72.173:python-django-example

Em seguida, execute o deploy: git push dokku main

6. Criando as tabelas do banco de dados

Nossa aplicação está no ar, mas ainda não tem as tabelas de nossa base de dados. Na máquina virtual execute:

dokku run python-django-example python manage.py migrate

Para criar um super usuário admin do Django:

dokku run python-django-example python manage.py createsuperuser

7. Configurando o domínio

Precisamos configurar o domínio para conseguir acessar o servidor. No nosso exemplo não temos URL então vamos configurar o acesso pelo IP mesmo.

Onde 201.23.72.173 é o ip do servidor.

dokku domains:add python-django-example 201.23.72.173
dokku ps:restart python-django-example

Caso tenha uma URL, por exemplo: django-example.com.br:

dokku domains:add python-django-example django-example.com.br
dokku config:set python-django-example ALLOWED_HOSTS="django-example.com.br,127.0.0.1, .localhost"
dokku ps:restart python-django-example

8. Acessando a aplicação

Com todas as etapas de deploy, migração do banco de dados e configuração de domínio concluídas, sua aplicação Python/Django está no ar na Magalu Cloud!

Agora, você pode acessar as diferentes partes da sua aplicação diretamente pelo navegador. Utilize o endereço IP do seu servidor (neste exemplo, 201.23.72.173) para acessar tanto a interface administrativa do Django quanto o endpoint da sua API de exemplo:

Admin Django: http://201.23.72.173/admin

API: http://201.23.72.173/api/status/

9. Considerações finais

Já utilizo o Dokku em projetos pessoais e testes. Sempre funcionou muito bem para pequenas aplicações. Vale a pena estudar mais pois as possibilidades de integrações são grandes.

Qualquer dúvida ou sugestão me envie um email: joseadolfojr@gmail.com

Top comments (1)

Collapse
 
douglas_farinelli_0326055 profile image
Douglas Farinelli

Excelente artigo, Junior!