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

768
Visualizações
Cómo usar un entorno virtual de python copiado en un contenedor docker

Tengo un paquete de python que instalé y modifiqué según mis necesidades almacenado en una carpeta venv. Pensé usando:

 RUN source venv/bin/activate

en mi Dockerfile (después de copiarlo en el contenedor, por supuesto) resolvería mis problemas, pero los comentarios a esta respuesta revelaron que no es así. Luego, me encontré con este artículo que muestra cómo configurar un nuevo venv dentro de un contenedor acoplable, pero no responde a mi pregunta. Muchas otras respuestas me enviaron a una persecución salvaje interminable, así que decidí preguntar aquí. Con suerte, una buena respuesta resolverá mi problema y servirá a aquellos que enfrentarán este problema en el futuro para paquetes de python personalizados en contenedores docker.

Mi pregunta:
¿Cómo usar un venv copiado en un contenedor docker?

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

0

En general, no puede copiar entornos virtuales en ningún lugar, Docker u otros. Tienden a estar vinculados a una ruta de sistema de archivos muy específica y a una instalación de Python bastante específica. Si supiera que tiene exactamente el mismo binario de Python y lo copió exactamente en la misma ruta del sistema de archivos, probablemente podría COPIARLO tal como está, pero el sistema de compilación sería extremadamente frágil.

También se da el caso de que, por lo general, no necesita entornos virtuales en Docker. Una imagen de Docker proporciona el mismo tipo de instalación aislada de Python para la que usaría un entorno virtual en un contexto que no sea de Docker. Si normalmente configura un entorno virtual ejecutando

 python3 -m venv vpy . vpy/bin/activate pip install -r requirements.txt

entonces puede obtener una instalación equivalente con un Dockerfile como

 FROM python:3 WORKDIR /app COPY requirements.txt . RUN pip install -r requirements.txt

En los comentarios, insinúa la modificación manual de los paquetes instalados. Esto no suele ser una buena práctica (¿qué pasa si hay una actualización de seguridad crítica en un paquete que ha cambiado? ¿qué pasa si su colega necesita trabajar en su proyecto pero no en su computadora?). Puede usar una herramienta como diff (1) para crear un archivo de parche que describa lo que ha cambiado, comparando su archivo modificado con el original. Si tienes eso, entonces puedes hacer algo como

 COPY local.patch /app/ RUN cd $(python3 -c 'import sysconfig; print(sysconfig.get_path("platlib"))') \ && patch -p0 < /app/local.patch

Es importante tener en cuenta que cada comando EJECUTAR inicia un nuevo shell en un nuevo contenedor. Entonces, el comando cd en este último ejemplo solo afecta este comando RUN y nada después. En el comando RUN source ... propuesto, las variables de entorno establecidas por esto se perderán al final de ese comando EJECUTAR. (También tenga en cuenta que source no es un comando de shell estándar y no funcionará, por ejemplo, en imágenes basadas en Alpine, pero . es equivalente y es estándar).

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