首页 > 解决方案 > 无法使用 docker-compose up 运行服务器

问题描述

我在开发时使用 Docker。我注意到我无法使用docker-compose up命令启动开发服务器,但可以使用docker-compose run

这是我的 Dockerfile:

FROM python:3.6

WORKDIR /opt/lib
RUN pip install --upgrade pip
COPY requirements.txt ./
RUN pip install -r requirements.txt

WORKDIR /opt/web

这是 docker-compose.yaml

version: '2'
services:
  web:
    build: ./web/
    working_dir: /opt/web
    ports:
      - "3000:3000"
    volumes:
      - ./web:/opt/web
    user: 1000:1000
    depends_on:
      - database
    env_file: env
    command: python manage.py runserver 0.0.0.0:3000

  database:
    image: mdillon/postgis:9.6
    ports:
      - "5432:5432"
    volumes:
      - ./database/data:/var/lib/postgresql/data

现在,如果我运行docker-compose up,只有数据库启动: 在此处输入图像描述

但是docker-compose run服务器启动正常: 在此处输入图像描述

如果我将 docker-compose.yml > services > web > command 更改为/usr/local/bin/gunicorn project.wsgi:application -w 4 -b :3000它也可以正常工作,但我需要在文件更改时自动重启 在此处输入图像描述

我在 MacOS 上使用 Docker Version 18.03.1-ce-mac65 (24312)Django==1.10

我试图将其重置为出厂设置,但这没有帮助。

你能帮我解决这个问题吗?

编辑1:

其他 manage.py 命令,如migrate,工作正常

标签: pythondjangodockerdocker-compose

解决方案


需要./manage.py runserver分配一个伪 TTY。您可以通过这种方式将其传递给 docker-compose.yml

services:
  web:
    tty: true
    command: ./manage.py runserver 0:3000

推荐阅读