在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-admin
。 PATH
没有正确设置,或者我在这里做了其他的错误? 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才被迫,并给了我正确的结果。