Compose: Montar solo extensiones de archivo específicas

Creado en 24 jul. 2014  ·  3Comentarios  ·  Fuente: docker/compose

No estoy seguro de si esto es posible, pero me pregunto si sería posible montar solo, digamos, archivos *.py con la parte volumes de fig.yml .

Estoy tratando de montar un directorio que tiene un paquete de Python. Mi Dockefile se ve así:

FROM python:3

ADD . /code/
WORKDIR /code
RUN pip install -r requirements-testing.txt -e .

ENV LC_ALL C.UTF-8
ENV LANG C.UTF-8

El problema es que cuando tengo un fig.yml como este:

python:
  build: .
  volumes:
    - .:/code/

Y luego ejecute, intente ejecutar la CLI instalada con mi aplicación Python, no funciona, porque pip install -e . crea algunos directorios con el paquete de Python integrado en /code/ . Luego, cuando monte mi directorio de código fuente local sobre ese directorio, elimina esos directorios de compilación y el comando falla.

$ fig run python dc-campaign-finance-scraper
Traceback (most recent call last):
  File "/usr/local/bin/dc-campaign-finance-scraper", line 5, in <module>
    from pkg_resources import load_entry_point
  File "/usr/local/lib/python3.4/site-packages/pkg_resources.py", line 2697, in <module>
    working_set.require(__requires__)
  File "/usr/local/lib/python3.4/site-packages/pkg_resources.py", line 669, in require
    needed = self.resolve(parse_requirements(requirements))
  File "/usr/local/lib/python3.4/site-packages/pkg_resources.py", line 572, in resolve
    raise DistributionNotFound(req)
pkg_resources.DistributionNotFound: dc-campaign-finance-scraper==0.5.1

Entonces, si solo pudiera montar archivos .py , no sobrescribiría todas esas otras cosas. No estoy seguro de si esto es remotamente posible, y si no, si tiene algún consejo sobre el uso de fig para el desarrollo de paquetes de Python /

Comentario más útil

La mejor solución que encontré fue solo montar el código real y los directorios de pruebas, y dejar los otros archivos intactos.

De esta forma, los archivos de origen se actualizarán sin reconstruir, pero no sobrescribirán los archivos compilados.

python:
  build: .
  volumes:
    - dc_campaign_finance_scraper:/code/dc_campaign_finance_scraper
    - test:/code/test

Todos 3 comentarios

Me temo que esto no es posible con los volúmenes de Docker.

¿Es posible obtener pip install para colocar los archivos en un directorio diferente, fuera de /code , y configurar Python para que busque allí? Echando un vistazo a los documentos de Pip , parece que --root o --target podrían hacer el truco.

La mejor solución que encontré fue solo montar el código real y los directorios de pruebas, y dejar los otros archivos intactos.

De esta forma, los archivos de origen se actualizarán sin reconstruir, pero no sobrescribirán los archivos compilados.

python:
  build: .
  volumes:
    - dc_campaign_finance_scraper:/code/dc_campaign_finance_scraper
    - test:/code/test

Esto me estaba volviendo loco durante horas, gracias @saulshanabrook

¿Fue útil esta página
0 / 5 - 0 calificaciones