У меня есть виртуальная машина с Ubuntu 16.04.6. У меня есть этот тестовый каталог:

  ls -hal
  drwxr-xr-x 2 root root 4.0K Apr  9 09:21 diversity
  -rwxr-xr-x 1 root root  473 Apr  9 09:21 diversity_test.py
  -rw-r--r-- 1 root root  145 Apr  9 09:26 dockerfile

В каталоге diversity есть два файла, которые я хочу сравнить и найти их разницу. код в diversity_test.py:

  #!/usr/bin/env python

  #modules
  import difflib
  from pathlib import Path
  #modules

  #variables
  path1=Path('/media/test2/diversity/file1')
  path2=Path('/media/test2/diversity/file2')

  text1 = [l.strip() for l in open(str(path1))]
  text1.sort(key=lambda x: x.strip('#').rsplit('.', 1)[0])
  text2 = [l.strip() for l in open(str(path2))]
  text2.sort(key=lambda x: x.strip('#').rsplit('.', 1)[0])

  for line in difflib.unified_diff(text1, text2, n=0):
       print line,

Когда я запускаю diversity_test.py, он показывает разницу между двумя файлами в каталоге diversity и работает правильно без ошибок. но когда я создаю образ докера и запускаю его, я получил эту ошибку:

   docker build -t python-diversity .
   docker run python-diversity
       Traceback (most recent call last):
           File "diversity_test.py", line 12, in <module>
         text1 = [l.strip() for l in open(str(path1))]
      IOError: [Errno 2] No such file or directory: '/media/test2/diversity/file1'

Содержание dockerfile:

  FROM python:2

  WORKDIR /media/test2

  COPY diversity_test.py .

  RUN pip install --no-cache-dir pathlib

  CMD ["python", "diversity_test.py"]

Я искал эту ошибку о докере, но не нашел решения. также я новичок в докере. почему так происходит и как это исправить?

-1
BlackCrystal 9 Апр 2021 в 08:19

1 ответ

Лучший ответ

Вы сделали КОПИРОВАНИЕ только для файла Python, а не для каталога.

Поскольку все файлы находятся в том же каталоге, что и Dockerfile, просто COPY . /media/test2 и забудьте о WORKDIR

Вы также можете запустить с монтированием тома, который перезапишет любые существующие данные, которые могли быть скопированы, и это даст дополнительное преимущество в виде отсутствия необходимости перестраивать образ, если ваши файлы изменятся.

docker run --rm -v $PWD/diversity:/media/test2/diversity python-diversity
1
OneCricketeer 9 Апр 2021 в 05:36