Docker无法打开文件,无法使用docker-compose在装有django的容器中运行python应用程序。

0 人关注

我是Django的新手。我想运行下面这个例子的代码 https://github.com/wsvincent/djangoforprofessionals/tree/master/ch1-hello .容器被创建了,但它没有运行,因为它被打断了,因为Docker不能启动应用程序,在运行manage.py的命令时显示以下错误。

Creating ch1-hello_web_1 ... done
Attaching to ch1-hello_web_1 web_1  | python: can't open 
file '/code/manage.py': [Errno 2] No such file or directory
ch1-hello_web_1 exited with code 2

我使用的是Windows 7专业版,因此我的Docker工具箱与其他docker化的应用程序工作正常。我访问了docker镜像,确认文件在容器中。所以我想知道,当Docker试图访问该文件时,是否可能是Linux的权限问题。

我的Docker版本是19.03.1,构建74b1e89e8a

docker镜像中的/code文件夹。

-rwxr-xr-x    1 root     root           361 Apr 23 02:11 Dockerfile
-rwxr-xr-x    1 root     root           157 Apr 11 21:31 Pipfile
-rwxr-xr-x    1 root     root          1624 Apr 11 21:31 Pipfile.lock
-rwxr-xr-x    1 root     root        131072 Apr 11 21:31 db.sqlite3
-rwxr-xr-x    1 root     root           103 Apr 23 02:11 docker-compose.yml
drwxr-xr-x    2 root     root          4096 Apr 23 00:38 hello_project
-rwxr-xr-x    1 root     root           633 Apr 11 21:31 manage.py
drwxr-xr-x    3 root     root          4096 Apr 23 00:38 pages

[1]: https://i.stack.imgur.com/u3KEn.png在Docker中的图像的文件截图

我使用的Dockerfile,我改成了阿尔卑斯山的版本。注意,使用完整的python docker镜像,python:最新的,我得到了同样的错误。

# Pull base image
FROM python:3.9.0a5-alpine3.10
# Set environment variables
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
# Set work directory
WORKDIR /code
# Install dependencies
COPY Pipfile Pipfile.lock /code/
RUN pip install pipenv && pipenv install --system
# Copy project
COPY . /code/

docker-compose.yml

version: '3.7'
services:
    build: .
    command: python /code/manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/code
    ports:
      - 8000:8000

我也试着在一个有人报告同样错误的线程中做了建议的修改,以防涉及到数据库,但问题仍然存在。使用docker-compose对Django应用进行Docker化的问题

提前感谢!