2015-06-07 4 views
1

У меня есть простой файл докеров для тестового приложения django. Я запускаю docker-compose как пользователь root, и я могу прочитать файл requirements.txt, но докер - это ошибка. Любой совет?Ошибка docker-compose - не удалось прочитать файл

[email protected]:/app/test-project# docker-compose build 
db uses an image, skipping 
Building web... 
Step 0 : FROM python:2.7 
---> 93d77aec17a0 
Step 1 : ENV PYTHONUNBUFFERED 1 
---> Using cache 
---> 25e2164606e7 
Step 2 : WORKDIR /app/test-project/ 
---> Using cache 
---> 366c21333f1f 
Step 3 : RUN pip install -r /app/test-project/requirements.txt 
---> Running in 75599e289c5e 
Could not open requirements file: [Errno 2] No such file or directory: '/app/test-project/requirements.txt' 
Service 'web' failed to build: The command [/bin/sh -c pip install -r /app/test-project/requirements.txt] returned a non-zero code: 1 

Чтение файла из командной строки.

[email protected]:/app/test-project# head -5 /app/test-project/requirements.txt 
Cheetah==2.4.4 
Django==1.7 
Landscape-Client==14.01 
PAM==0.4.2 
Pillow==2.6.1 

Мой файл докеров.

FROM python:2.7 
ENV PYTHONUNBUFFERED 1 
WORKDIR /app/test-project/ 
RUN pip install -r /app/test-project/requirements.txt 
ADD . /app/test_project/ 

ответ

2

Изготовление докеров выполняется в контейнере отдельно от вашего хоста. Контейнер имеет свою собственную файловую систему и не знает файлы на хост-системе.

Вы можете копировать файлы в контейнер с помощью

COPY /path/on/host /path/on/container

Dockerfile в

В настоящее время пип нужны файлы, но они не были добавлены.

В вашем случае вы можете переместить линию ADD внизу до команды pip. Это также будет better practice to use COPY, но это не ошибка.

Как это:

FROM python:2.7 
ENV PYTHONUNBUFFERED 1 
COPY . /app/test_project/ 
WORKDIR /app/test-project/ 
RUN pip install -r /app/test-project/requirements.txt 

Если это все еще не работает, вам нужно настроить . быть правильный/путь/к/тест-проект на хосте.

+0

Лучше всего скопировать файл требований.txt, выполнить настройку pip и затем скопировать остальные. таким образом, установка pip будет переделана только в том случае, если require.txt имеет чейнджер ;-) –

0

Одна из проблем, которую следует знать для будущих поисковиков, заключается в том, что путь относится к каталогу текущего Dockerfile, выполняемому docker-compose.

Это означает, что если ваш файл находится на том же уровне, что и ваш docker-compose.yml, а ваш Dockerfile находится в другом каталоге, переместите его в каталог, где находится Dockerfile.

Смежные вопросы