forked from erp-dev/erp
183 lines
4.0 KiB
YAML
183 lines
4.0 KiB
YAML
version: '3.8'
|
||
|
||
services:
|
||
postgres:
|
||
image: postgres:16-alpine
|
||
container_name: postgres
|
||
environment:
|
||
POSTGRES_USER: postgres
|
||
POSTGRES_PASSWORD: postgres
|
||
POSTGRES_DB: flower
|
||
ports:
|
||
- "5432:5432"
|
||
volumes:
|
||
- db_data:/var/lib/postgresql/data
|
||
healthcheck:
|
||
test: ["CMD-SHELL", "pg_isready -U postgres"]
|
||
interval: 5s
|
||
timeout: 3s
|
||
retries: 10
|
||
start_period: 10s
|
||
restart: unless-stopped
|
||
|
||
pgbouncer:
|
||
image: pgbouncer/pgbouncer:latest
|
||
container_name: pgbouncer
|
||
# 配置文件已包含所有配置,环境变量仅作为备用
|
||
environment:
|
||
# 如果镜像支持环境变量配置,这些可以作为备用
|
||
DATABASES_HOST: postgres
|
||
DATABASES_PORT: "5432"
|
||
DATABASES_USER: postgres
|
||
DATABASES_PASSWORD: postgres
|
||
DATABASES_DBNAME: flower
|
||
ports:
|
||
- "6432:6432"
|
||
volumes:
|
||
- ./pgbouncer/pgbouncer.ini:/etc/pgbouncer/pgbouncer.ini
|
||
# 确保 postgres 完全启动后再启动 pgbouncer
|
||
depends_on:
|
||
postgres:
|
||
condition: service_healthy
|
||
# DNS 配置:使用 Docker 内置 DNS,并添加 DNS 搜索域
|
||
dns:
|
||
- 127.0.0.11 # Docker 内置 DNS
|
||
dns_search:
|
||
- . # 当前网络域
|
||
restart: unless-stopped
|
||
|
||
pgadmin:
|
||
image: dpage/pgadmin4:latest
|
||
container_name: pgadmin
|
||
environment:
|
||
PGADMIN_DEFAULT_EMAIL: admin@admin.com
|
||
PGADMIN_DEFAULT_PASSWORD: admin
|
||
PGADMIN_CONFIG_SERVER_MODE: 'False'
|
||
ports:
|
||
- "5050:80"
|
||
volumes:
|
||
- pgadmin_data:/var/lib/pgadmin
|
||
depends_on:
|
||
- postgres
|
||
restart: unless-stopped
|
||
|
||
redis:
|
||
image: redis:7-alpine
|
||
container_name: redis
|
||
ports:
|
||
- "6379:6379"
|
||
volumes:
|
||
- redis_data:/data
|
||
restart: unless-stopped
|
||
|
||
rabbitmq:
|
||
image: rabbitmq:3-management-alpine
|
||
container_name: rabbitmq
|
||
environment:
|
||
RABBITMQ_DEFAULT_USER: guest
|
||
RABBITMQ_DEFAULT_PASS: guest
|
||
ports:
|
||
- "5672:5672"
|
||
- "15672:15672"
|
||
volumes:
|
||
- rabbitmq_data:/var/lib/rabbitmq
|
||
restart: unless-stopped
|
||
|
||
|
||
|
||
web:
|
||
build:
|
||
context: .
|
||
target: base
|
||
container_name: flower_web
|
||
command: python manage.py runserver 0.0.0.0:8000
|
||
ports:
|
||
- "8000:8000"
|
||
volumes:
|
||
- .:/app
|
||
environment:
|
||
DJANGO_SETTINGS_MODULE: flower.settings
|
||
PYTHONPATH: /app
|
||
DEBUG: "1"
|
||
ALLOWED_HOSTS: "localhost,127.0.0.1,0.0.0.0,8.148.215.233,yuwenerp.yuwen.cloud"
|
||
DB_HOST: pgbouncer
|
||
DB_PORT: "6432"
|
||
DB_NAME: flower
|
||
DB_USER: postgres
|
||
DB_PASSWORD: postgres
|
||
depends_on:
|
||
- pgbouncer
|
||
- postgres
|
||
- redis
|
||
- rabbitmq
|
||
restart: unless-stopped
|
||
|
||
celery_worker:
|
||
build:
|
||
context: .
|
||
target: base
|
||
container_name: celery_worker
|
||
command:
|
||
- celery
|
||
- -A
|
||
- flower
|
||
- worker
|
||
- -l
|
||
- info
|
||
- --concurrency=2
|
||
- --pool=solo
|
||
volumes:
|
||
- .:/app
|
||
environment:
|
||
CELERY_BROKER_URL: amqp://guest:guest@rabbitmq:5672//
|
||
CELERY_RESULT_BACKEND: redis://redis:6379/0
|
||
PYTHONPATH: /app
|
||
DB_HOST: pgbouncer
|
||
DB_PORT: "6432"
|
||
DB_NAME: flower
|
||
DB_USER: postgres
|
||
DB_PASSWORD: postgres
|
||
depends_on:
|
||
- pgbouncer
|
||
- postgres
|
||
- redis
|
||
- rabbitmq
|
||
restart: unless-stopped
|
||
|
||
celery_beat:
|
||
build:
|
||
context: .
|
||
target: base
|
||
container_name: celery_beat
|
||
command:
|
||
- celery
|
||
- -A
|
||
- flower
|
||
- beat
|
||
- -l
|
||
- info
|
||
volumes:
|
||
- .:/app
|
||
environment:
|
||
DJANGO_SETTINGS_MODULE: flower.settings
|
||
PYTHONPATH: /app
|
||
DB_HOST: pgbouncer
|
||
DB_PORT: "6432"
|
||
DB_NAME: flower
|
||
DB_USER: postgres
|
||
DB_PASSWORD: postgres
|
||
CELERY_BROKER_URL: amqp://guest:guest@rabbitmq:5672//
|
||
CELERY_RESULT_BACKEND: redis://redis:6379/0
|
||
depends_on:
|
||
- pgbouncer
|
||
- postgres
|
||
- redis
|
||
- rabbitmq
|
||
restart: unless-stopped
|
||
|
||
volumes:
|
||
db_data:
|
||
redis_data:
|
||
pgadmin_data:
|
||
rabbitmq_data:
|