erp-java/seata/server/docker-compose.yml

149 lines
5.1 KiB
YAML

version: '3.8'
services:
seata-server:
image: seataio/seata:1.8.0
container_name: seata-server
hostname: seata-server
ports:
- "8091:8091"
- "7091:7091"
environment:
- SEATA_CONFIG_NAME=file:/root/seata-config/registry,file:/root/seata-config
- SEATA_STORE_MODE=db
- SEATA_STORE_DB_DRIVER=com.mysql.cj.jdbc.Driver
- SEATA_STORE_DB_URL=jdbc:mysql://mysql:3306/seata?useUnicode=true&characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&failOverReadOnly=false&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
- SEATA_STORE_DB_USER=root
- SEATA_STORE_DB_PASSWORD=${MYSQL_ROOT_PASSWORD:-root123}
- SEATA_STORE_DB_GLOBAL_TABLE=global_table
- SEATA_STORE_DB_BRANCH_TABLE=branch_table
- SEATA_STORE_DB_LOCK_TABLE=lock_table
- SEATA_STORE_DB_PUBLIC_KEY=MySQL_RSA_PUBLIC_KEY
- SEATA_TRANSACTION_LOCK_RETRY_INTERVAL=30
- SEATA_TRANSACTION_LOCK_MAX_RETRY=100
- SEATA_LOG_PERSIST_MODE=file
- SEATA_SERVICE_VGROUP_MAPPING.default_tx_group=default
- SEATA_SERVICE_ENABLE_DEGRADE=false
- SEATA_SERVICE_DISABLE_GLOBAL_TRANSACTION=false
- SEATA_SERVER_MODE=standalone
- JAVA_OPT_EXT_JMX="-Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.port=9998 -Dcom.sun.management.jmxremote.rmi.port=9999 -Djava.rmi.server.hostname=127.0.0.1"
volumes:
- ./config/registry.conf:/root/seata-config/registry.conf:ro
- ./config/file.conf:/root/seata-config/file.conf:ro
- seata-server-data:/root/logs/seata
networks:
- seata-network
depends_on:
mysql:
condition: service_healthy
restart: unless-stopped
healthcheck:
test: ["CMD", "wget", "-q", "--spider", "http://localhost:7091/health"]
interval: 30s
timeout: 10s
retries: 5
mysql:
image: mysql:8.0
container_name: seata-mysql
hostname: seata-mysql
ports:
- "3306:3306"
environment:
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD:-root123}
- MYSQL_DATABASE=seata
command:
- --default-authentication-plugin=mysql_native_password
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_general_ci
- --max_connections=1000
- --lower_case_table_names=1
volumes:
- seata-mysql-data:/var/lib/mysql
- ./sql/store.sql:/docker-entrypoint-initdb.d/01-store.sql:ro
networks:
- seata-network
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-uroot", "-p${MYSQL_ROOT_PASSWORD:-root123}"]
interval: 10s
timeout: 5s
retries: 5
restart: unless-stopped
# Seata HA Mode - Additional instance
seata-server-cluster:
image: seataio/seata:1.8.0
container_name: seata-server-cluster
hostname: seata-server-cluster
ports:
- "8092:8091"
- "7092:7091"
environment:
- SEATA_CONFIG_NAME=file:/root/seata-config/registry,file:/root/seata-config
- SEATA_STORE_MODE=db
- SEATA_STORE_DB_DRIVER=com.mysql.cj.jdbc.Driver
- SEATA_STORE_DB_URL=jdbc:mysql://mysql:3306/seata?useUnicode=true&characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&failOverReadOnly=false&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
- SEATA_STORE_DB_USER=root
- SEATA_STORE_DB_PASSWORD=${MYSQL_ROOT_PASSWORD:-root123}
- SEATA_STORE_DB_GLOBAL_TABLE=global_table
- SEATA_STORE_DB_BRANCH_TABLE=branch_table
- SEATA_STORE_DB_LOCK_TABLE=lock_table
- SEATA_SERVICE_VGROUP_MAPPING.default_tx_group=default
- SEATA_SERVER_MODE=standalone
volumes:
- ./config/registry.conf:/root/seata-config/registry.conf:ro
- ./config/file.conf:/root/seata-config/file.conf:ro
- seata-server-cluster-data:/root/logs/seata
networks:
- seata-network
depends_on:
mysql:
condition: service_healthy
restart: unless-stopped
prometheus:
image: prom/prometheus:latest
container_name: seata-prometheus
ports:
- "9090:9090"
volumes:
- ./monitoring/prometheus.yml:/etc/prometheus/prometheus.yml:ro
- prometheus-data:/prometheus
command:
- '--config.file=/etc/prometheus/prometheus.yml'
- '--storage.tsdb.path=/prometheus'
- '--web.console.libraries=/etc/prometheus/console_libraries'
- '--web.console.templates=/etc/prometheus/consoles'
networks:
- seata-network
restart: unless-stopped
grafana:
image: grafana/grafana:latest
container_name: seata-grafana
ports:
- "3000:3000"
environment:
- GF_SECURITY_ADMIN_USER=admin
- GF_SECURITY_ADMIN_PASSWORD=admin123
- GF_USERS_ALLOW_SIGN_UP=false
volumes:
- grafana-data:/var/lib/grafana
- ./monitoring/grafana/provisioning:/etc/grafana/provisioning:ro
networks:
- seata-network
depends_on:
- prometheus
restart: unless-stopped
volumes:
seata-mysql-data:
seata-server-data:
seata-server-cluster-data:
prometheus-data:
grafana-data:
networks:
seata-network:
driver: bridge