在docker-compose中运行Django

在Docker容器中启动django项目时出现问题。 我的Dockerfile如下所示:

FROM python:2.7 ADD . /code WORKDIR /code RUN pip install -r requirements.txt EXPOSE 8000 

requirements.txt包含成功安装django的单行Django

docker-compose.yml有以下内容:

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

要创build一个项目,我打电话给:

 docker-compose run web python django-admin.py startproject web . 

其中崩溃与以下消息:

 python: can't open file 'django-admin.py': [Errno 2] No such file or directory 

另外这个

 docker-compose run web django-admin.py startproject web . 

崩溃

 ERROR: Cannot start service web: oci runtime error: container_linux.go:247: starting container process caused "exec: \"django-admin.py\": executable file not found in $PATH" 

在我看来,像这样执行容器时, $PATH中有一个错误。 当我使用交互模式时,我可以从这个文件夹中调用django-adminPATH没有正确设置,或者我在这里做了其他的错误? Dockerfile在目录web

编辑:在评论中的build议后,我试图用完整的path运行django-admin

 root@935ca5543589:/code# which django-admin /usr/local/bin/django-admin 

仍然没有改变:

 docker-compose run web /usr/local/bin/django-admin startproject web . ERROR: Cannot start service web: oci runtime error: container_linux.go:247: starting container process caused "exec: \"/usr/local/bin/django-admin\": stat /usr/local/bin/django-admin: no such file or directory" 

其实答案很简单。 当我首先运行项目时, Dockerfile出现错误。 在更改Dockerfile后, Dockerfile docker-compose不会自动重build我所假设的图像。 即使用docker build重build也没有解决这个问题。 只有删除整个图像后,重build才被迫,并给了我正确的结果。