Guias de Linguagem e Framework...
Guia Técnico para Executar Aplicação Django em Contêiner Docker
16 min
back4app containers é uma plataforma poderosa para hospedar aplicações django com sua capacidade de implantar automaticamente aplicativos django dockerizados, você pode lançar seu projeto em um ambiente escalável e flexível com facilidade neste guia, vamos orientá lo pelo processo de preparação e implantação de sua aplicação django no back4app containers neste guia abrangente, vamos orientá lo pelo processo de preparação e implantação de sua aplicação django no back4app containers, cobrindo tudo, desde projetos simples até configurações mais complexas se você tiver alguma dúvida ou comentário, sinta se à vontade para participar da conversa no canal #containers no back4app community no slack para discussões específicas sobre django no back4app containers a qualquer momento, você também pode nos contatar em community\@back4app com a qualquer momento, se você quiser verificar um projeto django de exemplo funcionando no back4app containers, vá para https //github com/templates back4app/containers python flask sample 1 prepare sua aplicação django certifique se de que sua aplicação django esteja estruturada corretamente e que todos os arquivos necessários, incluindo templates e arquivos estáticos, estejam organizados no diretório do projeto para projetos mais complexos, certifique se de ter uma configuração adequada de fábrica de aplicativos e siga as melhores práticas do django 2 crie um requirements txt arquivo liste todas as dependências necessárias e suas versões em um requirements txt arquivo este arquivo será usado pelo dockerfile para instalar os pacotes necessários ao construir a imagem docker aqui está um exemplo de requirements txt , para uma aplicação django, incluindo algumas dependências comuns que você pode usar em vários projetos sinta se à vontade para adicionar ou remover pacotes conforme necessário para sua aplicação específica requirements txt django==3 2 10 gunicorn==20 1 0 psycopg2 binary==2 9 1 djangorestframework==3 12 4 django cors headers==3 9 0 django environ==0 4 5 django extensions==3 1 3 django filter==21 1 django rest auth==0 9 5 django allauth==0 47 0 requests==2 27 1 3 crie um dockerfile escreva um dockerfile para definir a imagem docker da sua aplicação certifique se de usar uma imagem base adequada (como python 3 x slim), instalar as dependências do arquivo requirements txt, copiar os arquivos do seu projeto, expor a porta correta e especificar o comando apropriado para iniciar sua aplicação django (por exemplo, usando gunicorn ou uwsgi) exemplo 1 aplicação django básica com gunicorn este dockerfile é para uma aplicação django simples usando gunicorn como o servidor wsgi ele instala os pacotes necessários do arquivo requirements txt, copia os arquivos do projeto e expõe a porta 8000 para o servidor gunicorn o cmd especifica o comando para iniciar o servidor gunicorn, vinculando a 0 0 0 0 8000 \# base image from python 3 9 slim \# working directory workdir /app \# copy requirements file and install dependencies copy requirements txt requirements txt run pip install no cache dir r requirements txt \# copy the rest of the project files copy \# expose the server port expose 8000 \# command to start the server cmd \["gunicorn", " bind", "0 0 0 0 8000", "myproject wsgi"] exemplo 2 aplicação django com uwsgi e nginx este dockerfile é para uma aplicação django mais complexa que usa uwsgi como servidor wsgi e nginx como servidor proxy reverso ele instala dependências de construção para uwsgi e nginx, e então instala esses pacotes junto com uwsgi usando pip em seguida, copia os arquivos do projeto e o arquivo requirements txt, e expõe a porta 8000 para o servidor uwsgi o cmd especifica o comando para iniciar o uwsgi, usando um arquivo de configuração separado chamado "myproject uwsgi ini" o dockerfile também configura o nginx removendo o arquivo de configuração padrão, copiando um arquivo de configuração nginx personalizado chamado "myproject nginx conf" para o diretório apropriado, e criando um symlink para habilitar a configuração o arquivo de configuração do nginx especifica que o nginx deve escutar na porta 8000 e encaminhar solicitações para o servidor uwsgi que está rodando no mesmo contêiner docker \# base image from python 3 9 slim \# install build dependencies and curl run apt get update && apt get install y no install recommends \\ build essential \\ libssl dev \\ libpcre3 dev \\ curl \\ && rm rf /var/lib/apt/lists/ \# install uwsgi and nginx run pip install uwsgi run apt get update && apt get install y no install recommends nginx \# configure nginx run rm /etc/nginx/sites enabled/default copy myproject nginx conf /etc/nginx/sites available/ run ln s /etc/nginx/sites available/myproject nginx conf /etc/nginx/sites enabled/ \# copy requirements file and install dependencies copy requirements txt requirements txt run pip install no cache dir r requirements txt \# copy the rest of the project files copy \# expose the server port expose 8000 \# start uwsgi cmd \["uwsgi", " ini", "/app/myproject uwsgi ini"] certifique se de substituir "myproject" pelo nome real do seu projeto nos dockerfiles além disso, para a configuração do uwsgi e nginx, você precisa criar um arquivo "myproject nginx conf" e um arquivo "myproject uwsgi ini" no diretório do seu projeto, que contenham a configuração apropriada para o nginx e uwsgi 4 teste sua aplicação localmente após criar seu dockerfile, você pode testar sua aplicação django localmente antes de implantá la nos contêineres back4app este é um passo importante para garantir que tudo esteja funcionando como esperado e para evitar quaisquer problemas ou erros durante a implantação ao testar sua aplicação localmente, você pode identificar quaisquer problemas ou erros antes de implantar nos contêineres back4app se você encontrar algum problema, certifique se de resolvê lo antes de passar para o próximo passo docker build t your app name docker run p 8080 8080 your app name 5 publique seu projeto em um repositório git crie um gitignore para excluir arquivos desnecessários ou sensíveis do seu repositório (por exemplo, pycache , env , pyc , etc ) inicialize um repositório git, faça o commit dos arquivos do seu projeto e envie os para um repositório remoto (por exemplo, no github) 6 implante sua aplicação nos contêineres back4app após criar sua conta back4app, você pode seguir os passos listados na documentação 1 conecte seu repositório github com o back4app 2 prepare seu projeto para implantação em resumo, os contêineres seguirão as instruções detalhadas no seu dockerfile e começarão a criar seu app 7 monitore a implantação fique de olho nos logs de implantação e no status no painel de contêineres do back4app resolva quaisquer erros ou problemas que surgirem durante a implantação no caso de projetos mais complexos, certifique se de que todos os serviços necessários (como bancos de dados ou apis externas) estejam configurados corretamente e acessíveis observe que você também tem uma seção chamada logs que lista todos os logs em execução para seu aplicativo e também é importante ficar de olho nela para verificar se você tem algum problema com seu aplicativo 8 solução de problemas erros comuns de implantação estão listados aqui outros erros comuns possíveis ao implantar aplicações flask são configuração de host incorreta aplicações django devem ser configuradas para rodar no host 0 0 0 0 quando implantadas nos contêineres do back4app se sua aplicação estiver usando localhost ou 127 0 0 1 , pode não ser acessível externamente certifique se de que seu arquivo de configurações django ( settings py ) contenha a seguinte linha allowed hosts = \[' '] se sua aplicação ainda não estiver acessível, verifique seu dockerfile para garantir que a porta correta esteja exposta (por exemplo, expose 8000 para a porta 8000) dependências incompatíveis ou ausentes certifique se de que todas as dependências necessárias estão listadas no seu requirements txt e que suas versões são compatíveis entre si e com o código da sua aplicação dependências ausentes ou incompatíveis podem levar a erros em tempo de execução verifique se todas as dependências necessárias estão instaladas no seu contêiner docker executando o comando docker run com as flags it e abrindo um shell dentro do contêiner docker run it myproject container /bin/bash uma vez dentro do contêiner, verifique se todas as dependências necessárias estão instaladas usando pip list se uma dependência estiver ausente, instale a usando pip install \<dependência> problemas de conexão com o banco de dados se sua aplicação django depende de um banco de dados, certifique se de que a string de conexão e as credenciais estão configuradas corretamente na configuração da aplicação além disso, verifique se o banco de dados é acessível a partir do ambiente dos contêineres back4app verifique seu arquivo de configurações do django ( settings py ) para garantir que a configuração do banco de dados está correta você pode precisar especificar o host do banco de dados, porta, nome, usuário e senha dependendo da sua configuração certifique se de que seu contêiner docker tem acesso ao banco de dados verificando se o banco de dados é acessível de dentro do contêiner você pode fazer isso abrindo um shell dentro do contêiner ( docker run it myproject container /bin/bash ) e usando ping ou telnet para se conectar ao banco de dados falhas na aplicação ou exceções não tratadas exceções não tratadas ou falhas no seu código de aplicação django podem causar falhas na implantação ou comportamento inesperado examine os logs da sua aplicação em busca de mensagens de erro e resolva quaisquer problemas no seu código verifique os logs do contêiner executando docker logs myproject container para ver se há erros ou exceções sendo lançados use uma ferramenta como o sentry para rastrear e monitorar erros na sua aplicação servidor wsgi configurado incorretamente certifique se de que seu servidor wsgi (por exemplo, gunicorn ou uwsgi) está corretamente configurado no seu dockerfile e que ele inicia sua aplicação django usando o ponto de entrada correto (por exemplo, myproject wsgi\ application ) verifique se o servidor correto está instalado e listado como uma dependência no seu requirements txt arquivo variáveis de ambiente ou configuração inválidas verifique se sua aplicação depende de variáveis de ambiente ou arquivos de configuração específicos e assegure se de que estão corretamente configurados no ambiente dos contêineres back4app defina quaisquer variáveis de ambiente necessárias no seu dockerfile usando o comando env verifique se quaisquer arquivos de configuração exigidos pela sua aplicação estão corretamente montados como volumes no contêiner docker se você encontrar quaisquer outros problemas ao implantar sua aplicação django nos contêineres back4app, entre em contato conosco pelo e mail community\@back4app com 9 escale sua aplicação para projetos mais complexos que exigem recursos adicionais ou escalonamento horizontal/vertical, considere atualizar seu plano de contêineres back4app para lidar com o aumento de tráfego e carga 10 aplicação de exemplo para um projeto de aplicação django de exemplo, você pode ir para https //github com/templates back4app/containers python django https //github com/templates back4app/containers python django