Django Docker compose未复制任何文件

Django Docker compose未复制任何文件,django,docker,docker-compose,Django,Docker,Docker Compose,非常简单:下面的docker compose配置不允许在运行后保留任何文件。因此,当我执行docker exec-I-t aas-job-hunter\u web\u 1 ls/app-alt时,我什么也看不到 以下是(非)工作最小示例: 我在Windows10上,我允许安装驱动器并启用TLS连接。我不知道还能做什么。最让我困惑的是,requirements.txt显然是复制过来的(因为它安装了所有内容),但当我查看docker exec时,它并不在那里 我的目录结构是: parent/

非常简单:下面的docker compose配置不允许在运行后保留任何文件。因此,当我执行docker exec-I-t aas-job-hunter\u web\u 1 ls/app-alt时,我什么也看不到

以下是(非)工作最小示例:

我在Windows10上,我允许安装驱动器并启用TLS连接。我不知道还能做什么。最让我困惑的是,
requirements.txt
显然是复制过来的(因为它安装了所有内容),但当我查看
docker exec
时,它并不在那里

我的目录结构是:

parent/
    website/
        manage.py
        ...
    Dockerfile
    docker-compose.yml
    ...
Dockerfile: docker-compose.yml: 回溯:
我认为复制没有什么问题。但是,您需要将工作目录设置为
/app
,因为您的
manage.py
文件位于
/app/website
内,而不是Docker内的
/website

因此,我认为您的
Dockerfile
应该是这样的:

FROM python:3.6

RUN mkdir /app

COPY requirements.txt /app/requirements.txt
RUN pip install -r /app/requirements.txt

COPY . /app
WORKDIR /app

EXPOSE 8000
CMD python website/manage.py runserver 0.0.0.0:8000
取消注释
#WORKDIR/app
。 我还稍微清理了一下其他部分,以利用
WORKDIR
更多功能

FROM python:3.6
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
EXPOSE 8000
CMD python website/manage.py runserver 0.0.0.0:8000

实际上它复制文件

  • 解决方案1
  • 将CMD更改为:

    CMD python /app/website/manage.py runserver 0.0.0.0:8000
    
  • 解决方案2
  • 在创建
    /app
    文件夹之前调用WORKDIR。因此,将Dockerfile更改为:

    FROM python:3.6.2
    
    # By copying over requirements first, we make sure that Docker will cache
    # our installed requirements rather than reinstall them on every build
    COPY requirements.txt /app/requirements.txt
    RUN pip install -r /app/requirements.txt
    
    # Now copy in our code, and run it
    COPY . /app
    WORKDIR /app
    #EXPOSE 8000
    CMD python ./website/manage.py runserver 0.0.0.0:8000
    # CMD tail -f /dev/null # use when testing
    
    然后再叫它


    此外,请记住,在当前的
    docker compose
    文件中,您使用的是绑定装载,而不是卷,因此,上下文-
    完全替换容器中
    /app
    的内容。

    构建web步骤1/7:从python:3.6--->0668df180a32步骤2/7:WORKDIR/app--->使用缓存-->91165ba8058b步骤3/7:COPY requirements.txt。-->B94456103CC步骤4/7:运行pip安装-r/requirements.txt->在4a5cbc06f32a中运行错误:无法打开需求文件:[Errno 2]没有这样的文件或目录:“/requirements.txt”错误:服务“web”无法生成:命令“/bin/sh-c pip install-r/requirements.txt”返回了一个非零代码:1
    没有在
    requirements.txt
    前面正确安装的
    //code>。尽管错过了/,但最后我还是收到了相同的错误。构建时,您是否在父目录下?您可以使用
    docker compose run web bash
    docker compose run web ls
    @SuperSandro2000进一步调试。在构建时,我在父目录中。我已经按照你的建议做了-我仍然在/app目录(或者任何目录)中找不到任何文件。你的compose和Dockerfile所在的目录中有
    .dockergnore
    吗?没有
    FROM python:3.6
    WORKDIR /app
    COPY requirements.txt .
    RUN pip install -r requirements.txt
    COPY . .
    EXPOSE 8000
    CMD python website/manage.py runserver 0.0.0.0:8000
    
    CMD python /app/website/manage.py runserver 0.0.0.0:8000
    
    FROM python:3.6.2
    
    # By copying over requirements first, we make sure that Docker will cache
    # our installed requirements rather than reinstall them on every build
    COPY requirements.txt /app/requirements.txt
    RUN pip install -r /app/requirements.txt
    
    # Now copy in our code, and run it
    COPY . /app
    WORKDIR /app
    #EXPOSE 8000
    CMD python ./website/manage.py runserver 0.0.0.0:8000
    # CMD tail -f /dev/null # use when testing