81 lines
1.9 KiB
YAML
81 lines
1.9 KiB
YAML
version: '3.8'
|
|
services:
|
|
# ETCD 分布式键值存储
|
|
etcd:
|
|
image: quay.io/coreos/etcd:v3.5.4
|
|
container_name: etcd
|
|
ports:
|
|
- "2379:2379" # 客户端连接端口
|
|
- "2380:2380" # 节点通信端口
|
|
environment:
|
|
ETCD_LISTEN_CLIENT_URLS: "http://0.0.0.0:2379"
|
|
ETCD_ADVERTISE_CLIENT_URLS: "http://etcd:2379"
|
|
ETCD_LISTEN_PEER_URLS: "http://0.0.0.0:2380"
|
|
ETCD_INITIAL_ADVERTISE_PEER_URLS: "http://etcd:2380"
|
|
ETCD_NAME: "etcd-single"
|
|
ETCD_INITIAL_CLUSTER: "etcd-single=http://etcd:2380"
|
|
ETCD_INITIAL_CLUSTER_TOKEN: "etcd-cluster"
|
|
ETCD_INITIAL_CLUSTER_STATE: "new"
|
|
volumes:
|
|
- etcd-data:/etcd-data
|
|
networks:
|
|
- app-network
|
|
|
|
# Redis 缓存数据库
|
|
redis:
|
|
image: redis:7.0-alpine
|
|
container_name: redis
|
|
ports:
|
|
- "6379:6379"
|
|
volumes:
|
|
- redis-data:/data
|
|
networks:
|
|
- app-network
|
|
command: redis-server --save 60 1 --loglevel warning
|
|
|
|
# MySQL 数据库
|
|
mysql:
|
|
image: mysql:8.0
|
|
container_name: mysql
|
|
environment:
|
|
MYSQL_ROOT_PASSWORD: rootpassword # 请更改为强密码
|
|
MYSQL_DATABASE: app_db
|
|
MYSQL_USER: app_user
|
|
MYSQL_PASSWORD: userpassword # 请更改为强密码
|
|
ports:
|
|
- "3306:3306"
|
|
volumes:
|
|
- mysql-data:/var/lib/mysql
|
|
- ./mysql-init:/docker-entrypoint-initdb.d # 初始化SQL脚本目录
|
|
networks:
|
|
- app-network
|
|
healthcheck:
|
|
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
|
|
interval: 5s
|
|
timeout: 10s
|
|
retries: 5
|
|
|
|
# ETCD 可视化界面 (Web UI)
|
|
etcd-viewer:
|
|
image: deltaprojects/etcdkeeper:latest
|
|
container_name: etcd-viewer
|
|
ports:
|
|
- "8080:8080"
|
|
environment:
|
|
ETCD_HOST: etcd
|
|
ETCD_PORT: 2379
|
|
networks:
|
|
- app-network
|
|
depends_on:
|
|
- etcd
|
|
|
|
# 数据卷声明
|
|
volumes:
|
|
etcd-data:
|
|
redis-data:
|
|
mysql-data:
|
|
|
|
# 网络配置
|
|
networks:
|
|
app-network:
|
|
driver: bridge |