【问题标题】:DOCKER does not run manage.pyDOCKER 不运行 manage.py
【发布时间】:2020-06-04 09:39:19
【问题描述】:

有人可以解释为什么 docker 不想运行 Django 服务器

这就是我的项目结构:

app
  bankproject
      env
      docker-compose.yml
      Dockerfile
      manage.py  
      requirements.txt

这里有我的文件 Docker:

    # pull official base image
FROM python:3.8.0-alpine

# set work directory
WORKDIR /app

# set environment variables
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1

# install dependencies
RUN pip install --upgrade pip
COPY ./requirements.txt requirements.txt
RUN pip install -r requirements.txt

# copy project
COPY . /app

还有我的 docker-compose.yml

version: '3.7'

services:
  web:
    build: ./
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - ./app/:/app
    ports:
      - 8000:8000
    env_file:
      - ./.env.dev

实际上在文件夹 env 我有文件 .env.dev 它是:

DEBUG=1
SECRET_KEY=foo
DJANGO_ALLOWED_HOSTS=localhost 127.0.0.1 [::1]

我的错误:

web_1 | python:无法打开文件'manage.py':[Errno 2]没有这样的文件或目录 app_web_1 以代码 2 退出

【问题讨论】:

  • COPY . /app之后添加RUN pwd && ls -lah .命令,看看当前位置是什么,manage.py是否存在?

标签: python django docker docker-compose dockerfile


【解决方案1】:

如果我没记错的话,我认为你在 Dockerfile 中错误地设置了工作目录,它应该是这样的:

# set work directory
WORKDIR /app

COPY . /app

【讨论】:

  • 已编辑,如您所说,但仍然无法正常工作(((
  • 这也无济于事,因为manage.py 在子目录中,所以在/app 中也无济于事...
  • 这只是另一个查看您的文件结构的客人,但我认为您应该从 cd 开始进入 bankproject 目录。然后运行 ​​python manage.py,因为你当前在你的根目录中。
【解决方案2】:

您的volumes: 正在使用来自主机的任意内容覆盖图像内容。当目录布局不匹配时,它会隐藏您复制的/app/manage.py 脚本。

您应该从docker-compose.yml 文件中删除command:volumes: 行。 (您还必须在 Dockerfile 中添加相应的 CMDENTRYPOINT 是可选的,您应该在此处省略它。)这样就剩下了

version: '3.7'
services:
  web:
    build: ./
    ports:
      - 8000:8000
    env_file:
      - ./.env.dev

如果您使用当前设置环顾四周,您应该会看到两件事。如果你docker-compose run web sh,我希望你会看到/app 目录完全是空的;如果您在主机系统上环顾四周,在docker-compose.yml 和其他顶级文件旁边会有一个空的app 目录。这些是由您拥有的 volumes: 指令创建的,因为它指向一个不存在的目录(./app 部分)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-05
    • 1970-01-01
    • 2021-10-30
    • 2017-05-19
    • 1970-01-01
    • 2019-06-24
    • 1970-01-01
    相关资源
    最近更新 更多