数据库与进程调度¶
记录 Django + PostgreSQL 的真实项目配置、Dockerfile 与 supervisord 调度,SQLite 通用命令不再收录。
-
PostgreSQL 接入
settings.py的DATABASES、psycopg2-binary驱动、docker-compose编排。 -
应用镜像
Python slim 基础镜像、pip 换源、supervisord 调度入口。
-
进程调度
supervisord.conf管理 Django / Redis / Celery / Nginx。
🟢Django + PostgreSQL 配置¶
settings.py 的 DATABASES、psycopg2-binary 驱动与 docker-compose 编排。关键词:DATABASES、HOST=db、psycopg2、POSTGRES_*。
flowchart LR
A[uvicorn 应用] -->|HOST=db| D[(PostgreSQL 容器 db)]
D --> V[[/var/lib/postgresql/data/pgdata]]
A -.broker.-> R[(redis-server)]
容器编排中 HOST 使用数据库服务名:
| settings.py | |
|---|---|
- 使用 PostgreSQL 后端,依赖
psycopg2驱动。 - 容器编排中
HOST填服务名而非 IP。
PostgreSQL 驱动使用 psycopg2-binary,在 Dockerfile 中通过 pip 安装。
docker-compose 编排¶
docker-compose.yml
version: '3'
services:
tp_cbbs:
build:
context: ./
dockerfile: ./Dockerfile
restart: always
ports:
- 127.0.0.1:36610:8081
- 6690:9001
- 6691:5555
volumes:
- ./:/home
networks:
- cbb_tp
depends_on:
- db
db:
image: postgres
restart: always
shm_size: 128mb
environment:
POSTGRES_PASSWORD: mysecretpassword789456
POSTGRES_USER: postgres
POSTGRES_DB: tpcbb
PGDATA: /var/lib/postgresql/data/pgdata
volumes:
- /root/auto/cbb_postsql:/var/lib/postgresql/data/pgdata
networks:
- cbb_tp
networks:
cbb_tp:
🟢应用 Dockerfile¶
Dockerfile
FROM python:slim
LABEL version="1.0" description="这是一个服务器;默认通过supervisord调度" by="mibo"
ADD sources.list /etc/apt/
RUN apt update
RUN apt install -y locales subversion procps net-tools nginx redis
ENV DEBIAN_FRONTEND=noninteractive
RUN pip3 config set global.index-url https://mirrors.aliyun.com/pypi/simple && \
pip3 config set install.trusted-host mirrors.aliyun.com && \
/usr/local/bin/python -m pip install --upgrade pip
RUN pip3 install django django-grappelli uvicorn psycopg2-binary
RUN apt install iputils-ping expect ssh rsync -y
RUN pip3 install supervisor pyecharts requests paramiko flower webssh django-celery-beat Celery "celery[redis,auth,msgpack]" xmltodict
WORKDIR /home
CMD bash run.sh
依赖速览
| 类别 | 包 |
|---|---|
| Web | django、django-grappelli、uvicorn |
| 数据库 | psycopg2-binary |
| 异步 | Celery、celery[redis,auth,msgpack]、django-celery-beat |
| 运维 | supervisor、flower、webssh、paramiko |
| 其他 | pyecharts、requests、xmltodict |
🟢通过 supervisord 调度¶
[program:x]、command、autostart、supervisorctl。在容器内统一管理 Django、Redis、Celery、Nginx 等进程:
常用管理命令¶
[program:x] 关键项¶
| 项 | 说明 |
|---|---|
command |
启动命令 |
directory |
工作目录 |
autostart |
随 supervisor 启动 |
autorestart |
崩溃自动重启 |
startsecs / startretries |
启动判定 |
user |
运行用户 |
environment |
环境变量 |
stdout_logfile / stderr_logfile |
日志 |