Changes: - Remove deprecated Fengling.Activity and YarpGateway.Admin projects - Add points processing services with distributed lock support - Update Vben frontend with gateway management pages - Add gateway config controller and database listener - Update routing to use header-mixed-nav layout - Add comprehensive test suites for Member services - Add YarpGateway integration tests - Update package versions in Directory.Packages.props Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
167 lines
4.1 KiB
YAML
167 lines
4.1 KiB
YAML
services:
|
|
# Redis - Always included for caching and sessions
|
|
redis:
|
|
image: redis:7.2-alpine
|
|
container_name: netcorepal-redis
|
|
ports:
|
|
- "6379:6379"
|
|
volumes:
|
|
- redis_data:/data
|
|
command: redis-server --appendonly yes --databases 1024
|
|
restart: unless-stopped
|
|
healthcheck:
|
|
test: ["CMD", "redis-cli", "ping"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 3
|
|
|
|
# MySQL Database (default option)
|
|
mysql:
|
|
image: mysql:8.0
|
|
container_name: netcorepal-mysql
|
|
ports:
|
|
- "3306:3306"
|
|
environment:
|
|
MYSQL_ROOT_PASSWORD: 123456
|
|
MYSQL_CHARACTER_SET_SERVER: utf8mb4
|
|
MYSQL_COLLATION_SERVER: utf8mb4_unicode_ci
|
|
TZ: Asia/Shanghai
|
|
volumes:
|
|
- mysql_data:/var/lib/mysql
|
|
- ./mysql-init:/docker-entrypoint-initdb.d:ro
|
|
restart: unless-stopped
|
|
healthcheck:
|
|
test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-p123456"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 5
|
|
|
|
# SQL Server (alternative database option)
|
|
sqlserver:
|
|
image: mcr.microsoft.com/mssql/server:2022-latest
|
|
container_name: netcorepal-sqlserver
|
|
ports:
|
|
- "1433:1433"
|
|
environment:
|
|
ACCEPT_EULA: Y
|
|
MSSQL_SA_PASSWORD: Test123456!
|
|
TZ: Asia/Shanghai
|
|
volumes:
|
|
- sqlserver_data:/var/opt/mssql
|
|
restart: unless-stopped
|
|
profiles:
|
|
- sqlserver
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "/opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P Test123456! -Q 'SELECT 1'"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 5
|
|
|
|
# PostgreSQL (alternative database option)
|
|
postgres:
|
|
image: postgres:15-alpine
|
|
container_name: netcorepal-postgres
|
|
ports:
|
|
- "5432:5432"
|
|
environment:
|
|
POSTGRES_USER: postgres
|
|
POSTGRES_PASSWORD: 123456
|
|
POSTGRES_DB: postgres
|
|
TZ: Asia/Shanghai
|
|
volumes:
|
|
- postgres_data:/var/lib/postgresql/data
|
|
- ./postgres-init:/docker-entrypoint-initdb.d:ro
|
|
restart: unless-stopped
|
|
profiles:
|
|
- postgres
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pg_isready -U postgres"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 3
|
|
|
|
# RabbitMQ (default message queue option)
|
|
rabbitmq:
|
|
image: rabbitmq:3.12-management-alpine
|
|
container_name: netcorepal-rabbitmq
|
|
ports:
|
|
- "5672:5672"
|
|
- "15672:15672"
|
|
environment:
|
|
RABBITMQ_DEFAULT_USER: guest
|
|
RABBITMQ_DEFAULT_PASS: guest
|
|
volumes:
|
|
- rabbitmq_data:/var/lib/rabbitmq
|
|
restart: unless-stopped
|
|
healthcheck:
|
|
test: ["CMD", "rabbitmq-diagnostics", "ping"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 3
|
|
|
|
# Kafka (alternative message queue option)
|
|
zookeeper:
|
|
image: confluentinc/cp-zookeeper:7.4.0
|
|
container_name: netcorepal-zookeeper
|
|
environment:
|
|
ZOOKEEPER_CLIENT_PORT: 2181
|
|
ZOOKEEPER_TICK_TIME: 2000
|
|
volumes:
|
|
- zookeeper_data:/var/lib/zookeeper/data
|
|
- zookeeper_logs:/var/lib/zookeeper/log
|
|
restart: unless-stopped
|
|
profiles:
|
|
- kafka
|
|
|
|
kafka:
|
|
image: confluentinc/cp-kafka:7.4.0
|
|
container_name: netcorepal-kafka
|
|
depends_on:
|
|
- zookeeper
|
|
ports:
|
|
- "9092:9092"
|
|
environment:
|
|
KAFKA_BROKER_ID: 1
|
|
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
|
|
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:9092
|
|
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
|
|
KAFKA_AUTO_CREATE_TOPICS_ENABLE: 'true'
|
|
volumes:
|
|
- kafka_data:/var/lib/kafka/data
|
|
restart: unless-stopped
|
|
profiles:
|
|
- kafka
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "kafka-broker-api-versions --bootstrap-server localhost:9092"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 5
|
|
|
|
# Kafka UI (optional management interface)
|
|
kafka-ui:
|
|
image: provectuslabs/kafka-ui:latest
|
|
container_name: netcorepal-kafka-ui
|
|
depends_on:
|
|
- kafka
|
|
ports:
|
|
- "8080:8080"
|
|
environment:
|
|
KAFKA_CLUSTERS_0_NAME: local
|
|
KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: kafka:9092
|
|
restart: unless-stopped
|
|
profiles:
|
|
- kafka
|
|
|
|
volumes:
|
|
redis_data:
|
|
mysql_data:
|
|
sqlserver_data:
|
|
postgres_data:
|
|
rabbitmq_data:
|
|
zookeeper_data:
|
|
zookeeper_logs:
|
|
kafka_data:
|
|
|
|
networks:
|
|
default:
|
|
name: netcorepal-network |