/ / Django con Docker: el servidor no se inicia: python, django, docker, docker-compose

Django con Docker - El servidor no se inicia - Python, django, docker, docker-componer

He seguido los pasos en el tutorial oficial de la ventana acoplable para comenzar a utilizar Django: https://docs.docker.com/compose/django/

Funciona bien hasta que tengo que correr. docker-componer hasta

No me da un error directamente, pero tampoco ejecutó el servidor, deteniéndose en este punto:

(Captura de pantalla de la Terminal de inicio rápido de Docker)

enter image description here

docker-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/

Estoy en Windows y, por lo tanto, he usado docker-toolbox.

Gracias por tus sugerencias!

Respuestas

1 para la respuesta № 1

Iniciar docker-compose en modo separado:

docker-compose up -d

comprueba tu id de contenedor django

docker ps

luego inicie sesión en el contenedor:

docker exec -it yourDjangoContainerID bash

Luego vaya al directorio donde se encuentra el archivo manage.py, y escriba

python manage.py migrate

0 para la respuesta № 2

Puede poner el comando de migración en su docker-compose.yml expediente. Algo como

web:
command: >
bash -c
"python3 manage.py migrate
python3 manage.py runserver 0.0.0.0:8000"

reemplazando

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

Esto aplicará migraciones cada vez que lo hagas. docker-compose up.


0 para la respuesta № 3

Puedes hacerlo de dos o más maneras,
1. Cambiando el docker-compose file
Asumiendo que tienes igual / similar docker-compose.yml archivo como en aquí (9)

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. agregar comandos multilínea

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