Докер - Нет такого файла или каталога. Копировать не копирует все файлы - PullRequest
0 голосов
/ 12 мая 2019

Dockerfile не полностью копирует все файлы из локального каталога. Я не понимаю, почему он копирует папку из бэкэнда, но не все файлы. Спасибо за помощь ..

структура:

docker/
    django/
          /Dockerfile
          /backend/
              requirements.txt
              src/
    angular4/
          /Dockerfile
          /client
    docker-compose.yml

докер-compose.yml

version: '3'
services:
  db:
    image: postgres:9.6
    hostname: db
    environment:
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: postgres
      POSTGRES_DB: alinta
    ports:
      - "5432:5432"
  backend:
    build: ./django
    image: alinta
    command: python3 manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/var/www/alinta/
    ports:
      - "8000:8000"
    depends_on:
      - db
  migration:
    image: alinta
    command: python3 manage.py migrate --noinput
    volumes:
      - .:/var/www/alinta/
    depends_on:
      - db
  frontend:
    build: ./angular4
    volumes:
      - .:/var/www/alinta
    ports:
      - "4200:4200"

Dockerfile (django):

FROM postgres:9.6
RUN apt-get update && apt-get install -q -y postgresql-9.6 postgresql-client-9.6 postgresql-contrib-9.6 postgresql-client-common postgresql-common 
#RUN echo postgres:postgres | chpasswd
#RUN pg_createcluster 9.6 main --start
#RUN /etc/init.d/postgresql start

FROM python:3.7
MAINTAINER Nikita Alekseev <nik_alekseev@outlook.com>
# Alinta
# Version: 1.0
# Install Python and Package Libraries
RUN apt-get update && apt-get upgrade -y && apt-get autoremove && apt-get autoclean
RUN apt-get install -y \
    libffi-dev \
    libssl-dev \
    libxml2-dev \
    libxslt-dev \
    libjpeg-dev \
    libfreetype6-dev \
    zlib1g-dev \
    net-tools \
    vim
RUN apt-get install -y \
    python3-pip \
    python3-dev \
    python3-virtualenv \ 
    libpq-dev \ 
    postgresql \
    postgresql-contrib \
    nginx \
    curl
RUN pip3 install virtualenv
# Project Files and Settings
ARG PROJECT=alinta
ARG PROJECT_DIR=/var/www/${PROJECT}
RUN mkdir -p $PROJECT_DIR/backend/src
RUN mkdir -p $PROJECT_DIR/backend/src/static
RUN mkdir -p $PROJECT_DIR/backend/src/media

#WORKDIR $PROJECT_DIR
COPY ./backend /var/www/alinta/
WORKDIR $PROJECT_DIR/backend
RUN virtualenv -p python3.7 --no-site-packages env
RUN /bin/bash -c "source env/bin/activate"
RUN pip3 install -r requirements.txt
WORKDIR $PROJECT_DIR/backend/src
EXPOSE 8000

docker-compose build
ОШИБКА: не удалось открыть файл требований: [Errno 2] Нет такого файла или каталога: 'needs.txt'

1 Ответ

0 голосов
/ 12 мая 2019

Для вашего Dockerfile ваш файл needs.txt находится в бэкэнд-каталоге, а не на том же уровне, поэтому добавление или копирование сделает его видимым:

, поэтому добавьте:

ADD ./backend/requirements.txt requirements.txt

или

COPY ./backend/requirements.txt requirements.txt

перед запуском

RUN pip3 install -r requirements.txt

Простое копирование внутреннего каталога как:

COPY ./backend /var/www/alinta/

не позволит Docker узнатьконтекст вашего requrements.txt .Использование ADD или COPY сообщит Docker, как найти файл.

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