我已按照官方docker教程中的步骤启动并运行django:https://docs.docker.com/compose/django/
一切正常,直到我必须运行 docker-compose up
它没有直接给我一个错误,但它也不会运行服务器,此时停止:
( 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/
我在Windows上,因此使用了docker-toolbox。
感谢您的建议!
答案 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