Django与Docker - 服务器无法启动

时间:2018-03-07 19:41:57

标签: python django docker docker-compose

我已按照官方docker教程中的步骤启动并运行django:https://docs.docker.com/compose/django/

一切正常,直到我必须运行 docker-compose up

它没有直接给我一个错误,但它也不会运行服务器,此时停止:

Docker快速入门终端的屏幕截图

enter image description here

搬运工-compose.yml

version: '3'

services:
  db:
    image: postgres
  web:
    build: .
    command: >
      bash -c
        "python3 manage.py migrate
        python3 manage.py runserver 0.0.0.0:8000"
    volumes:
      - .:/code
    ports:
      - "8000:8000"
    depends_on:
      - db

Dockerfile:

FROM python:3
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip install -r requirements.txt
ADD . /code/

我在Windows上,因此使用了docker-toolbox。

感谢您的建议!

3 个答案:

答案 0 :(得分:1)

以分离模式启动docker-compose:

docker-compose up -d

检查您的django容器ID

docker ps

然后登录容器:

docker exec -it yourDjangoContainerID bash

然后转到manage.py文件所在的目录,并键入

python manage.py migrate

答案 1 :(得分:0)

您可以将迁移命令放入docker-compose.yml文件中。像

这样的东西
web:
  command: >
    bash -c
      "python3 manage.py migrate
      python3 manage.py runserver 0.0.0.0:8000"

替换

web:
  command: python3 manage.py runserver 0.0.0.0:8000

每次执行docker-compose up时都会应用迁移。

答案 2 :(得分:0)

你可以用两种/(或更多种)方式做到这一点,
1。更改docker-compose file 假设您有与here (9)

中相同/相似的docker-compose.yml文件
version: '3'

services:
  base:
    build: .
    volumes:
      - .:/code

  db:
    image: postgres

  web:
    extends:
      service: base
    command: python3 manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/code
    ports:
      - "8000:8000"
    depends_on:
      - db
      - migration

  migration:
    extends:
      service: base
    command: python manage.py migrate --noinput
    depends_on:
      - db


2。添加多行命令

version: '3'

services:
  db:
    image: postgres
  web:
    build: .
    command: bash -c "python manage.py migrate && python manage.py runserver 0.0.0.0:8000" # Change is here <<<<
    volumes:
      - .:/code
    ports:
      - "8000:8000"
    depends_on:
      - db