Compose: Monte apenas extensões de arquivo específicas

Criado em 24 jul. 2014  ·  3Comentários  ·  Fonte: docker/compose

Não tenho certeza se isso é possível, mas gostaria de saber se seria possível montar apenas, digamos, *.py arquivos com a parte volumes de fig.yml .

Estou tentando montar um diretório que contém um pacote python. Meu Dockefile se parece com isto:

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

O problema é que quando eu tenho um fig.yml como este:

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

E então tente executar o CLI instalado com meu aplicativo Python, ele não funciona, porque pip install -e . cria alguns diretórios com o pacote python construído em /code/ . Então, quando eu monto meu diretório de código-fonte local sobre esse diretório, ele remove o diretório de construção e o comando falha.

$ 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

Portanto, se eu pudesse montar apenas .py arquivos, isso não sobrescreveria todas as outras coisas. Não tenho certeza se isso é remotamente possível, e se não, se você tem alguma dica usando fig para desenvolvimento de pacote python /

Comentários muito úteis

A melhor solução que encontrei foi apenas montar o código real e os diretórios de testes, e deixar os outros arquivos intactos.

Desta forma, os arquivos de origem serão atualizados sem reconstruir, mas não sobrescreverá os arquivos compilados.

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

Todos 3 comentários

Isso não é possível com volumes Docker, infelizmente.

É possível fazer pip install colocar os arquivos em um diretório diferente, fora de /code , e configurar o Python para olhar lá? Olhando os documentos do --root ou --target podem resolver o problema.

A melhor solução que encontrei foi apenas montar o código real e os diretórios de testes, e deixar os outros arquivos intactos.

Desta forma, os arquivos de origem serão atualizados sem reconstruir, mas não sobrescreverá os arquivos compilados.

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

Isso estava me deixando louco por horas, obrigado @saulshanabrook

Esta página foi útil?
0 / 5 - 0 avaliações