Docker compose - 找不到 manage.py 文件

Vir*_*ual 3 python docker docker-compose

我想用 docker-compose 创建 2 个 Docker 容器。1 个用于 DB(Mongo),1 个用于 Web(Django)。这是我的文件

docker-compose.yml

version: '3'
services:
  db:
    image: mongo
    command: mongod
  web:
    build: code/
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/code
    ports:
      - "8000:8000"
    depends_on:
      - db
Run Code Online (Sandbox Code Playgroud)

代码/Dockerfile

FROM python:3
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
COPY requirements.txt /code/
RUN pip install -r requirements.txt
COPY cleverInvestWeb/ /code/
Run Code Online (Sandbox Code Playgroud)

在目录code/cleverInvestWeb/ 中是我来自 django 的 manage.py 文件。

当我运行docker-compose up它时,它会抛出以下错误:

web_1  | python: can't open file 'manage.py': [Errno 2] No such file or directory
Run Code Online (Sandbox Code Playgroud)

当我通过 Docker 本身启动容器docker exec -it dockerdiplom_web bash并在ls那里执行操作时,它会显示该manage.py文件。

你知道为什么 docker-compose 在启动时找不到我的文件吗?

Adi*_*iii 6

Dockerfile 和 docker-compose 中的目录结构似乎令人困惑。另一件奇怪的事情是您可以在docker exec.

您将代码复制到COPY cleverInvestWeb/ /code/Dockerfile 中,然后将 Docker-compose 中的卷挂载到,.:/code以便所有内容都将覆盖在该/code位置的现有映像中。

我假设你的 python 文件放在本地目录中,cleverInvestWeb所以 docker-compose 启动它会覆盖现有的图像代码,你的文件更新位置将是code/cleverInvestWeb/manage.py/code/manage.py

调试:

  • 删除 docker-compose 中的安装并检查它是否有效
  • command: tail -f /dev/null 在 docker-compose 中设置此命令并使用验证您的文件位置 docker exec

  • @David Maze 评论和你的回答很有帮助。我删除了 docker-compose.yml 文件中的“volumes”部分,并使用“python /code/manage.py runserver 0.0.0.0:8000”更正了“command”。谢谢你们,现在可以了!:D (2认同)