首页 > 解决方案 > 在 django 服务器启动后运行一个额外的脚本

问题描述

我有一个通过 docker-compose 运行的简单 Django API,我想bot.py在服务器启动后运行一个脚本。我如何使用 docker 来做到这一点?

我的Dockerfile

FROM python:3.8
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
COPY requirements.txt /code/
RUN pip install --upgrade pip
RUN pip install -r requirements.txt
COPY . /code/

并且docker-compose.yml

version: '3'

services:
    web:
        build: .
        command: bash -c 'python3 network/manage.py makemigrations &&
                          python3 network/manage.py migrate &&
                          python3 network/manage.py runserver 0.0.0.0:8000'
        volumes: 
            - .:/code
        ports: 
            - "8000:8000"

我尝试添加CMD [ "python", "./bot_new/bot.py" ],但实际上不起作用

标签: pythondjangodockerdocker-compose

解决方案


您可以按照教程在 Django 命令中转换脚本,然后在应用程序准备好后在主应用程序中执行命令,如下所示:

from django.core.management import call_command
from django import apps

class MyAppConfig(apps.AppConfig):
name = 'myapp'

def ready(self):
    call_command('bot')

推荐阅读