Olá, pessoal Alguém aí pode me dar um exemplo de como construir uma imagem baseada em um projeto Django?
Olá, pessoal Alguém aí pode me dar um exemplo de como construir uma imagem baseada em um projeto Django?
Oi Bruno, tudo bem?
Aqui está um exemplo que resolveria isso que você puxou:
FROM python:3.8
WORKDIR /app
COPY requirements.txt /app
RUN pip install -r requirements.txt
3- Adicione mais linhas ao Dockerfile para copiar os arquivos do seu projeto para a imagem e executar os comandos necessários para inicializar o servidor Django:
COPY . /app
RUN python manage.py collectstatic --no-input
EXPOSE 8000
CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]
4- Save o Dockerfile e execute o comando docker build na linha de comando para construir a imagem a partir do seu projeto Django:
$ docker build -t my-django-project .
Isso vai construir a imagem e vai salvar com o nome "my-django-project". Lembrando que é possível usar o comando docker run para iniciar um contêiner a partir da imagem e executar o servidor Django:
$ docker run -p 8000:8000 my-django-project
Isso iniciará o contêiner e exporá a porta 8000 do contêiner para a porta 8000 do host, permitindo que você acesse o servidor Django em http://localhost:8000/.
Algo assim!
Ainda é possível adicionar mais instruções ao Dockerfile para adicionar recursos adicionais à imagem, como suporte a ambientes de desenvolvimento ou integração contínua, mas imagino que isso vai ser tratado no meio da Formação DevOps.
Espero ter ajudado e bons estudos,
Abcs!
Obrigado, Natan. A sua solução me deu uma boa orientação, mas quando eu vou gerar uma imagem docker ocorre um erro por causa da lib 'psycopg2'. E quando eu comento ela no meu requirements.txt, na hora de rodar o container da erro por que o sistema depende dessa lib.
Fala Bruno!
Opa, que bom que consegui ajudar! :) Sobre o outro erro que você está recebendo, ele pode ser causado por um problema justamente com a biblioteca psycopg2 no seu ambiente Docker e ela é necessária para conectar a bancos de dados PostgreSQL no Python, e se o seu sistema depende dela, é importante incluí-la no seu ambiente Docker.
Uma possível solução é adicionar a linha psycopg2 ao seu arquivo requirements.txt, que especifica as dependências do seu projeto. Isso fará com que a biblioteca psycopg2 seja instalada no seu ambiente Docker quando você construir a imagem.
Outra opção é adicionar a seguinte linha ao seu arquivo Dockerfile:
RUN pip install psycopg2
Isso fará com que a biblioteca psycopg2 seja instalada na imagem Docker quando você construir a imagem.
Depois de adicionar a biblioteca psycopg2 ao seu ambiente Docker, você deve ser capaz de gerar a imagem sem receber o erro relacionado à biblioteca. É importante lembrar de verificar se o restante do seu código está correto e não há outros erros que possam impedir a geração da imagem.
Abcs!
Na verdade eu fiz isso, Natan. Instalei o 'psycopg2-binary', como o erro sugeriu e em seguida tentei instalar o 'psycopg2'. Mesmo assim, o erro persistiu Esse é exatamente o erro, e como o meu código está:
Bruno,
Talvez esse outro tópico ajude, problema semelhante
https://cursos.alura.com.br/forum/topico-erro-ao-instalar-o-psycopg2-205093
Tudo bem Bruno?
A biblioteca psycopg2 é uma versão que deve ser compilada na sua instalação e sendo assim, vai precisar de verias dependências que são desnecessárias posteriormente, uma solução é trocar ela pela versão já compilada, a psycopg2-binary, podendo ser colocada tanto no requirements.txt
quanto em um RUN
.
Espero ter ajudado, se essa solução der problema me avise.
Obrigado, Leonardo. Eu ja consegui resolver o bug. Eu estava instalando o python:3.11-slim, mas ele é uma versão 'ligth', por isso não estava dando certo, mesmo eu intalando o psycopg2-binary. No final das contas era só intalar o python:3.11 no início do script e o psycopg2-binary antes do requirements.txt . Mas muito obrigado pela sua colaboração e a colaboração do Natan.
No final o meu Dockerfile ficou assim:
FROM python:3.11
WORDIR /django
COPY requirements.txt /django
RUN python -m pip install --upgrade pip
RUN python -m pip install psycopg2-binary
RUN python -m pip install -r requirements.txt
EXPOSE 8000
CMD [ "python", "manage.py", "runserver" ]