在docker-compose中运行Django

时间:2017-02-13 03:22:00

标签: python django docker docker-compose

我在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

创建一个我打电话的项目:

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出错了。当我使用交互模式-it时,我可以从此文件夹中调用django-adminPATH设置不正确还是我在这里做错了什么? Dockerfile位于web目录中。

修改:在评论中提出建议后,我尝试使用完整路径运行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"

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

我跑了什么:

docker-compose run app djando-admin.py startproject app

输出:

  

sh:djando-admin.py:未找到

解决方案:

sudo docker-compose run app django-admin startproject app .

尝试使用sudo