如何在docker-compose中挂载本地目录,以便Dockerfile可以从中复制文件?

时间:2020-07-31 20:30:03

标签: docker-compose copy dockerfile volume

我正在使用Docker19。我在docker-compose.yml文件中有此文件...

var tiger = function(name, info) {
    var obj = {};
    obj.behave = info;

    console.log("tiger: " + name + " " + obj.behave);

    obj.tigerInner = function(){
        console.log('name: ' + name);    
        console.log("tigerInner, behave: " + obj.behave);
    };
    return obj;
}

var test = tiger("tiger", "eating");
test.tigerInner();

在我的本地文件系统上,请注意我在挂载的卷中有此文件...

  python:
    restart: always
    build: ./python
    #ports:           # to access the container from outside
    #  - "8000:8000"
    environment:
      DEBUG: 'true'
    #command: /usr/local/bin/gunicorn directory.wsgi:application --reload -w 2 -b :8000
    volumes:
    - /Users/davea/projects/my_python_project:/my-app
    depends_on:
      - sql-server-db

Python Dockerfile如此开始

$ ls /Users/davea/projects/my_python_project/requirements.txt 
/Users/davea/projects/my_python_project/requirements.txt

但是,当我运行docker-compose up时,它死于此错误

FROM python:3.8-slim
  
RUN apt-get update && apt-get install
RUN apt-get install -y unixodbc-dev
RUN apt-get install -y g++

RUN python -m pip install --upgrade pip

WORKDIR /my-app/

COPY requirements.txt requirements.txt

我很困惑如何命名我的卷,以便Docker可以访问适当的文件。

1 个答案:

答案 0 :(得分:0)

在您的Dockerfile中,命令“ COPY”尝试从“ ./python/requirements.txt”中复制文件,该文件在当前docker build context中不存在。

由于您要在Docker卷中复制文件,因此可以将该卷挂载到Docker容器所需的位置,然后从Dockerfile中删除COPY命令。 另一个选择是将“ requirements.txt”放置到您在docker-compose中使用的“ ./python/”目录中。