1
0
forked from erp-dev/erp
Files
erpnew/docker-compose.yml
2025-12-24 23:18:07 +08:00

183 lines
4.0 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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: