Сборка докера requirements.txt не найдено (LINUX WSL)

#python #docker #dockerfile #windows-subsystem-for-linux

Вопрос:

Я использую LINUX WSL в своей системе Windows 10 для создания образа docker, но всегда сталкиваюсь с ошибкой:

 ERROR: Could not open requirements file: [Errno 2] No such file or directory: 'requirements.txt'
 

Я уже включил COPY команду внутри файла dockerfile для копирования всего (включая requirements.txt) в /app каталог. Это всегда происходит, когда я непосредственно даю docker build команду, не копируя папку репозитория с хоста Windows 10 в WSL LINUX (используя каталог /mnt для поиска файла настройки в хост-системе).
Однако, если я сначала скопирую папку репозитория в WSL, она будет работать без проблем. Я прикрепил файл dockerfile ниже,

 #get python
FROM python:3.7

#install odbc unix distribution
RUN apt-get update amp;amp; apt-get install -y --no-install-recommends 
    unixodbc-dev 
    unixodbc 
    libpq-dev 

#set working directory
WORKDIR /app

# Copy the rest of the working directory contents into the container at /app
COPY . . 
 
# Install any needed packages specified in requirements.txt
RUN pip install -r requirements.txt
 

Комментарии:

1. В качестве быстрой проверки вы можете добавить RUN ls , чтобы просмотреть содержимое вашей папки после COPY команды, просто чтобы убедиться, что все там так, как должно быть.

2. В Docker есть так называемый «контекст», который в обычных случаях является тем же корневым каталогом, в котором находится ваш файл Dockerfile. Команды КОПИРОВАНИЯ работают только с файлами или каталогами, уже расположенными в вашем контексте. Есть несколько способов обойти это (в зависимости от другого контекста), но они в основном очень запутанные. Убедитесь, что при сборке файлы всегда находятся в правильном контексте.