Переместить файл в образе Docker в процессе сборки - PullRequest
1 голос
/ 06 марта 2019

Докер: Как скопировать файл из одной папки в контейнере в другую?

В основном тот же вопрос, но я бы хотел переместить файл в процессе сборки

Я делаю это прямо сейчас:

COPY . /app
RUN mv backend/backend/local_settings.py.default backend/backend/local_settings.py

Это не работает, хотя.Это как-то портит файловую систему.Когда я захожу в папку, это происходит, когда я набираю ls

bash-4.4# ls -liah
ls: ./local_settings.py.default: No such file or directory
total 28
555172697 drwxr-xr-x    1 root     root          24 Mar  6 15:37 .
582753791 drwxr-xr-x    1 root     root          65 Dec 11 16:57 ..
580798835 -rw-r--r--    1 root     root           0 Oct  3 20:27 __init__.py
580798836 drwxr-xr-x    1 root     root          42 Mar  6 15:35 __pycache__
580798844 -rw-r--r--    1 root     root        3.7K Dec 11 16:57 settings.py
555172698 -rw-r--r--    1 root     root        2.8K Feb  8 19:11 local_settings.py
580798847 -rw-r--r--    1 root     root        3.6K Dec 11 16:57 urls.py
580798848 -rw-r--r--    1 root     root         392 Oct  3 20:27 wsgi.py

Если я набираю vim backend/ и нажимаю TAB для автозаполнения, файл отображается там!

bash-4.4# vim backend/
__init__.py                settings.py                local_settings.py.default  wsgi.py                    
__pycache__/               local_settings.py          urls.py

Кроме того, когда я запускаю команду с docker run, я получаю сообщение об ошибке:

Файл настроек импортирует local_settings.

Traceback (most recent call last):
05-Mar-2019 16:20:10      File "/app/backend/backend/settings.py", line 139, in <module>
05-Mar-2019 16:20:10        from .local_settings import *
05-Mar-2019 16:20:10    ImportError: No module named 'backend.local_settings'

Файл есть, но он не распознается!Когда я перехожу к контейнеру в интерактивном режиме, команда работает.


РЕДАКТИРОВАТЬ информацию Docker

Server Version: 18.09.2
Storage Driver: overlay2
 Backing Filesystem: xfs
 Supports d_type: false
 Native Overlay Diff: true
Kernel Version: 3.10.0-957.5.1.el7.x86_64

Stat для файлов local_settings

bash-4.4# stat local_settings.py.default
stat: can't stat 'local_settings.py.default': No such file or directory
bash-4.4# stat local_settings.py
  File: local_settings.py
  Size: 2816        Blocks: 8          IO Block: 4096   regular file
Device: 2fh/47d Inode: 555172698   Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2019-03-05 20:17:27.000000000
Modify: 2019-02-08 19:11:12.000000000
Change: 2019-03-05 19:37:35.000000000

1 Ответ

1 голос
/ 08 марта 2019

Вы используете overlay2 драйвер хранилища с резервной файловой системой, которая не поддерживает d_type. Это делает overlay2 довольно безумным в своем поведении . Согласно официальной документации Docker , такая конфигурация просто не поддерживается из-за таких проблем:

Поддерживаются следующие файловые системы поддержки:

...

xfs (RHEL 7.2 и выше), но только с включенным d_type=true.

В журнале вашего демона Docker также должно быть предупреждение об этой неправильной конфигурации.

Вам необходимо воссоздать резервную файловую систему , сделав ее ext4 или xfs с поддержкой d_type.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...