From 34962650dbd9d9b11ba33d6aebb38a30b7d73641 Mon Sep 17 00:00:00 2001 From: Leandro de Souza Date: Wed, 18 Oct 2023 12:30:41 -0300 Subject: [PATCH 1/2] Feat (debugging): Adds a way for debugging the django application inside vscode. Adds a task that can be used as a shortcut to start the local compose. Documented the debug proccess. As well as the DJANGO_HTTP_PORT env variable usage. --- .vscode/launch.json | 28 +++++++++++++++------------- .vscode/tasks.json | 20 ++++++++++++++++++++ README.md | 21 +++++++++++++++++++-- 3 files changed, 54 insertions(+), 15 deletions(-) create mode 100644 .vscode/tasks.json diff --git a/.vscode/launch.json b/.vscode/launch.json index 31e0fa4..9ee0fa3 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -12,24 +12,26 @@ "args": ["run", "pytest"] }, { - "name": "Python: Django", - "type": "python", - "request": "launch", - "module": "pdm", - "args": ["run", "python", "manage.py", "runserver"], - "django": true, - "envFile": "${workspaceFolder}/src/app/settings/.env" - }, - { - "name": "Python: Django - Docker", + "name": "Django Debug", "type": "python", "request": "launch", "program": "${workspaceFolder}/manage.py", - "args": ["runserver", "0.0.0.0:80"], + "args": [ + "runserver_plus", + "0.0.0.0:8888" + ], "django": true, + "envFile": "${workspaceFolder}/.env", "env": { - "PYTHONPATH": "__pypackages__/3.9/lib" - } + // Override these settings, since docker will be running + // and the services will be mapped to the host machine + "SQL_HOST": "127.0.0.1", + "REDIS_HOST": "127.0.0.1", + // "CELERY_ALWAYS_EAGER": "1" + // Uncomment the above line so tasks aren't dispatched to a worker + // with that you can debug it, does not work for periodic tasks + }, + "preLaunchTask": "Start Local Compose" } ] } diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 0000000..ff9f7d8 --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,20 @@ +{ + // See https://go.microsoft.com/fwlink/?LinkId=733558 + // for the documentation about the tasks.json format + "version": "2.0.0", + "tasks": [ + { + "label": "Start Local Compose", + "type": "shell", + "command": "docker compose -f local.yml --env-file .env up --build", + "isBackground": true, + "problemMatcher": { + "background": { + "activeOnStart": true, + "beginsPattern": "django_boilerplate-db_migration-1 exited with code 0", + "endsPattern": "Development server is running at" + } + } + } + ] +} diff --git a/README.md b/README.md index 1a3ef0c..61d35ee 100644 --- a/README.md +++ b/README.md @@ -781,17 +781,34 @@ Para iniciar a aplicação, vamos precisar criar um arquivo com as variáveis de cp .env_files/.env.example .env ``` -Com isso já é possível subir a aplicação, com o docker compose. Caso ainda não o tenha instalado, siga [estas instruções](https://docs.docker.com/compose/install/linux/). Caso já tenha instalado, basta executar o comando: `docker compose -f local.yml --env-file .env up --build` +Com isso já é possível subir a aplicação, com o docker compose. Caso ainda não o tenha instalado, siga [estas instruções](https://docs.docker.com/compose/install/linux/). + +Caso já tenha instalado, basta executar o comando: `docker compose -f local.yml --env-file .env up --build` + +> Outra maneira de executar a aplicação é iniciar a Task definida no VSCode "Start Local Compose". Para isso, pressione `F1` e selecione a opção `Tasks: Run Task` e selecione a task "Start Local Compose". Após isso, a aplicação e suas dependências estarão disponíveis. > Caso você tenha um servidor de postgreSQL rodando em sua máquina, talvez seja necessário alterar a variável de ambiente SQL_PORT para não coincidir com a porta do servidor da sua máquina. -Para visitar o Django, acesse [localhost:8000](http://localhost:8000) +Para visitar o Django, acesse [localhost:8000](http://localhost:8000) ou caso tenha definido uma variável de ambiente `DJANGO_HTTP_PORT` acesse na porta correspondente. Para visitar o MailPit, acesse [localhost:8025](http://localhost:8025) Você talvez queira conectar o PgAdmin no banco da aplicação, para isso verifique as credencias nas suas variáveis de ambiente, o postgreSQL estará disponível em localhost na porta definida na variável SQL_PORT. +### Debugging + +Muitas vezes é necessário debugar o projeto, por isso foi adicionado ao boilerplate algumas facilidades para debugar o projeto (principalmente a aplicação Django). Para iniciar a aplicação em modo de Debug, vá até a aba de "Run & Debug" utilizando o atalho `CTRL + Shift + D`, selecione a configuração "Django Debug" após isso pressione o botão de play ou pressione `F5`. + +> É importante citar que este comando irá subir os serviços definidos no compose `local.yml`, caso estes serviços já estejam em execução não há efeitos colaterais. Isso acontece por que antes de iniciar a configuração de debug, a tarefa "Start Local Compose" é iniciada. + +Após alguns segundos você terá duas instâncias da aplicação Django rodando em sua máquina. +* Uma na porta `8000` (Ou na porta definida pela variável de ambiente `DJANGO_HTTP_PORT`): A aplicação que subiu junto com o compose, acessar esta instância da aplicação **não irá parar** nos breakpoints definidos no VSCode. +* Outra na porta `8888`: A aplicação que foi iniciada pelo debugger do VSCode, por isso para debugar a aplicação, acesse através desta porta. + +🐛 Happy debugging! 🐛 + + ## Deploy Normalmente o deploy das aplicações são realizados em uma VPS, como a Amazon EC2. O Boilerplate já vem configurado com CI/CD para o ambiente de Staging, porém é simples copiar e criar um outro worfklow para o ambiente de produção. From c468dfa62530891e172d19bcd63a3765a53baef2 Mon Sep 17 00:00:00 2001 From: Leandro de Souza Date: Wed, 18 Oct 2023 12:32:27 -0300 Subject: [PATCH 2/2] Feat (debug): Adds the debug configuration for the pytest module --- .vscode/launch.json | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/.vscode/launch.json b/.vscode/launch.json index 9ee0fa3..b2d674c 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -8,8 +8,12 @@ "name": "Pytest", "type": "python", "request": "launch", - "module": "pdm", - "args": ["run", "pytest"] + "module": "pytest", + "args": [ + "-x", + "-vv" + ], + "envFile": "${workspaceFolder}/.env.test" }, { "name": "Django Debug",