Django-Cookiecutter无法启动默认项目

时间:2019-03-25 12:14:46

标签: python django docker

我正在尝试使用django-cookiectter启动一个新项目,它可以正常运行,但是当我尝试docker-compose -f local.yml up时,它会在django的服务上给我这个错误:

django_1    |  * Running on http://0.0.0.0:8000/ (Press CTRL+C to quit)
django_1    |  * Restarting with stat
': No such file or directorycute 'python
dj_ekiosk_django_1 exited with code 127
Gracefully stopping... (press Ctrl+C again to force)
Stopping dj_ekiosk_postgres_1 ... done

这是我要运行的local.yml文件(cookiecutter项目中没有任何更改)

local.yml
version: '3'

volumes:
  local_postgres_data: {}
  local_postgres_data_backups: {}

services:
  django:
    build:
      context: .
      dockerfile: ./compose/local/django/Dockerfile
    image: dj_ekiosk_local_django
    depends_on:
      - postgres
    volumes:
      - .:/app
    env_file:
      - ./.envs/.local/.django
      - ./.envs/.local/.postgres
    ports:
      - "8000:8000"
    command: /start

  postgres:
    build:
      context: .
      dockerfile: ./compose/production/postgres/Dockerfile
    image: dj_ekiosk_production_postgres
    volumes:
      - local_postgres_data:/var/lib/postgresql/data
      - local_postgres_data_backups:/backups
    env_file:
      - ./.envs/.local/.postgres

1 个答案:

答案 0 :(得分:1)

您的manage.py中可能有\r\n(CRLF)行结尾,这是Windows的默认值,但在Linux下会导致错误。 manage.py中的第一行应该是这样的:

#!/usr/bin/env python/r/n

当您使用文本编辑器/ IDE打开源代码时,您可能看不到/r/n部分,但是它在那里。您应该做的是将CRLF行尾转换为LF行尾(适用于Linux)。有一些工具可以做到这一点,并且由于您是在Windows上进行开发的,因此建议您将IDE配置为使用LF作为行尾。 (使用PyCharm,Visual Studio Code等配置它们确实很容易。)