Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

643
Visualizações
Integrando la poesía de Python con Docker

¿Puede darme un ejemplo de un Dockerfile en el que pueda instalar todos los paquetes que necesito de poetry.lock y pyproject.toml en mi imagen/contenedor de Docker?

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Compilación de Docker de varias etapas con Poetry y venv

No deshabilite la creación de virtualenv. Virtualenvs tiene un propósito en las compilaciones de Docker , ya que proporcionan una forma elegante de aprovechar las compilaciones de varias etapas. En pocas palabras, su etapa de compilación instala todo en el virtualenv, y la etapa final simplemente copia el virtualenv en una imagen pequeña.

Use poetry export e instale primero sus requisitos anclados, antes de copiar su código. Esto le permitirá usar el caché de compilación de Docker y nunca reinstalar las dependencias solo porque cambió una línea en su código.

No use la instalación de poetry install para instalar su código, ya que realizará una instalación editable. En su lugar, use la compilación de poetry build para construir una rueda y luego instálela en su virtualenv. (Gracias a PEP 517 , todo este proceso también podría realizarse con una pip install . simple, pero debido al aislamiento de compilación , terminaría instalando otra copia de Poetry).

Aquí hay un Dockerfile de ejemplo que instala una aplicación Flask en una imagen de Alpine, con una dependencia de Postgres. Este ejemplo utiliza un script de punto de entrada para activar virtualenv. Pero, en general, debería estar bien sin un script de punto de entrada porque simplemente puede hacer referencia al binario de Python en /venv/bin/python en su instrucción CMD .

Dockerfile

 FROM python:3.7.6-alpine3.11 as base ENV PYTHONFAULTHANDLER=1 \ PYTHONHASHSEED=random \ PYTHONUNBUFFERED=1 WORKDIR /app FROM base as builder ENV PIP_DEFAULT_TIMEOUT=100 \ PIP_DISABLE_PIP_VERSION_CHECK=1 \ PIP_NO_CACHE_DIR=1 \ POETRY_VERSION=1.0.5 RUN apk add --no-cache gcc libffi-dev musl-dev postgresql-dev RUN pip install "poetry==$POETRY_VERSION" RUN python -m venv /venv COPY pyproject.toml poetry.lock ./ RUN poetry export -f requirements.txt | /venv/bin/pip install -r /dev/stdin COPY . . RUN poetry build && /venv/bin/pip install dist/*.whl FROM base as final RUN apk add --no-cache libffi libpq COPY --from=builder /venv /venv COPY docker-entrypoint.sh wsgi.py ./ CMD ["./docker-entrypoint.sh"]

docker-entrypoint.sh

 #!/bin/sh set -e . /venv/bin/activate while ! flask db upgrade do echo "Retry..." sleep 1 done exec gunicorn --bind 0.0.0.0:5000 --forwarded-allow-ips='*' wsgi:app

wsgi.py

 import your_app app = your_app.create_app()
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda