Docker-没有这样的文件或目录。复制不会复制所有文件

时间:2019-05-12 01:14:08

标签: docker docker-compose dockerfile

Dockerfile不会完全复制本地目录中的所有文件。 我不明白他为什么要从后端复制文件夹,但其中没有所有文件。 感谢您的帮助。

结构:

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

docker-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]没有这样的文件或目录:'requirements.txt'

1 个答案:

答案 0 :(得分:0)

对于您的 Dockerfile ,您的requirements.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 的上下文。使用ADDCOPY将指导Docker如何查找文件。