在 docker-compose 中运行 Django

Fre*_*ddy 5 python django docker docker-compose

我在 docker 容器内启动 django 项目时遇到问题。我的 Dockerfile 如下所示:

FROM python:2.7
ADD . /code
WORKDIR /code
RUN pip install -r requirements.txt
EXPOSE 8000
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

要创建一个我正在调用的项目:

docker-compose run web python django-admin.py startproject web .
Run Code Online (Sandbox Code Playgroud)

崩溃并显示以下消息:

python: can't open file 'django-admin.py': [Errno 2] No such file or directory
Run Code Online (Sandbox Code Playgroud)

还有这个

docker-compose run web django-admin.py startproject web .
Run Code Online (Sandbox Code Playgroud)

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"
Run Code Online (Sandbox Code Playgroud)

在我看来,$PATH像这样执行容器时出现错误。当我使用交互模式时-it,我可以django-admin从这个文件夹调用。是设置PATH不正确还是我在这里做错了什么?该Dockerfile是目录web

编辑:在评论中提出建议后,我尝试django-admin使用完整路径运行:

root@935ca5543589:/code# which django-admin
/usr/local/bin/django-admin
Run Code Online (Sandbox Code Playgroud)

仍然没有变化:

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"
Run Code Online (Sandbox Code Playgroud)

Fre*_*ddy 3

答案其实很简单。Dockerfile当我第一次运行该项目时,我遇到了一个错误。更改后Dockerfiledocker-compose并没有像我假设的那样自动重建图像。即使重建也docker build没有解决这个问题。仅在删除整个图像后,才强制重建并给出了正确的结果。