'RUN pip install -r needs.txt' не работает - PullRequest
0 голосов
/ 24 апреля 2019

Я новичок в Docker и пытаюсь развернуть проект django с тем же.Но после сборки docker-compose я получаю эту ошибку:

ОШИБКА: Не удалось открыть файл требований: [Errno 2] Нет такого файла или каталога: 'needs.txt' ОШИБКА: Сервис 'web'не удалось собрать: команда' / bin / sh -c pip install -r needs.txt 'вернула ненулевой код: 1

Возможно, я неправильно запрограммировал путь, поэтомувот моя структура проекта

~/Desktop/Projects/ToDoApp
   ToDoApp
     settings.py
   docker-compose.yml
   Dockerfile
   manage.py
   requirements.txt

вот мой dockerfile

#pull official base image
FROM python:3

#set envionment variables
ENV PYTHONUNBUFFERED 1

# Adding requirements file
ADD requirements.txt ToDoApp/ToDoApp

#set work directory
WORKDIR /ToDoApp

#install dependencies
RUN pip install --upgrade pip
RUN pip install -r requirements.txt

CMD ["python", "./ToDoApp/manage.py runserver 0.0.0.0:8000"]

, а это мой docker-compose.yml

version: '3'

services:
  web:
    build: .
    command: python /ToDoApp/manage.py runserver 0.0.0.0:8000
    volumes:
        - .:/Desktop/Projects/ToDoApp
    ports:
        - "8000:8000"
    environment:
      - SECRET_KEY = please_change_me

Ответы [ 2 ]

1 голос
/ 24 апреля 2019

Я вижу несколько проблем:

  • Используемая вами команда ADD создает файл с именем ToDoApp/ToDoApp, он даже не создает подкаталог.
  • ADD не требуется (вы не извлекаете tar или не скачиваете с URL-адреса), поэтому вы можете переключиться на COPY.
  • Вам необходимо скопировать код.
  • Команды RUN могут быть переупорядочены для повышения эффективности кэширования.
  • Используйте правильные относительные пути и WORKDIR.
  • Аргументы необходимо разделять при использовании синтаксиса json

Полученный Dockerfile выглядит так:

FROM python:3

#set envionment variables
ENV PYTHONUNBUFFERED 1

# run this before copying requirements for cache efficiency
RUN pip install --upgrade pip

#set work directory early so remaining paths can be relative
WORKDIR /ToDoApp

# Adding requirements file to current directory
# just this file first to cache the pip install step when code changes
COPY requirements.txt .

#install dependencies
RUN pip install -r requirements.txt

# copy code itself from context to image
COPY . .

# run from working directory, and separate args in the json syntax
CMD ["python", "./manage.py", "runserver", "0.0.0.0:8000"]
0 голосов
/ 24 апреля 2019

Попробуйте это:

FROM python:3

#set envionment variables
ENV PYTHONUNBUFFERED 1

#set work directory
WORKDIR /ToDoApp

# Adding requirements file
ADD requirements.txt /ToDoApp/

#install dependencies
RUN pip install --upgrade pip
RUN pip install -r requirements.txt

CMD ["python", "./ToDoApp/manage.py runserver 0.0.0.0:8000"]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...