version: '3.8' services: mysql: image: mysql:8.0 container_name: erp-mysql environment: MYSQL_ROOT_PASSWORD: root123456 MYSQL_DATABASE: erp_java MYSQL_USER: erp_user MYSQL_PASSWORD: erp123456 ports: - 3307:3306 volumes: - mysql_data:/var/lib/mysql - ./infrastructure/mysql/init.sql:/docker-entrypoint-initdb.d/init.sql command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --max_connections=1000 networks: - erp-network healthcheck: test: - CMD - mysqladmin - ping - -h - localhost - -uroot - -proot123456 interval: 10s timeout: 5s retries: 10 start_period: 30s redis: image: redis:7-alpine container_name: erp-redis ports: - 6379:6379 volumes: - redis_data:/data command: redis-server --appendonly yes --requirepass redis123456 --maxmemory 512mb --maxmemory-policy allkeys-lru networks: - erp-network healthcheck: test: - CMD - redis-cli - -a - redis123456 - ping interval: 10s timeout: 5s retries: 5 nacos: image: nacos/nacos-server:v2.2.3 container_name: erp-nacos environment: MODE: standalone SPRING_DATASOURCE_PLATFORM: mysql MYSQL_SERVICE_HOST: mysql MYSQL_SERVICE_DB_NAME: nacos_config MYSQL_SERVICE_PORT: 3306 MYSQL_SERVICE_USER: root MYSQL_SERVICE_PASSWORD: root123456 NACOS_AUTH_ENABLE: 'true' NACOS_AUTH_TOKEN: SecretKey012345678901234567890123456789012345678901234567890123456789 NACOS_AUTH_IDENTITY_KEY: serverIdentity NACOS_AUTH_IDENTITY_VALUE: security ports: - 8848:8848 - 9848:9848 - 9849:9849 volumes: - nacos_logs:/home/nacos/logs - nacos_data:/home/nacos/data depends_on: mysql: condition: service_healthy networks: - erp-network healthcheck: test: - CMD - curl - -f - http://localhost:8848/nacos/ interval: 15s timeout: 10s retries: 5 start_period: 60s rocketmq: image: apache/rocketmq:5.1.4 container_name: erp-rocketmq ports: - 9876:9876 - 10909:10909 - 10911:10911 - 10912:10912 environment: NAMESRV_ADDR: localhost:9876 JAVA_OPTS: -Xms1g -Xmx1g volumes: - rocketmq_logs:/home/rocketmq/logs - rocketmq_store:/home/rocketmq/store networks: - erp-network command: sh mqnamesrv healthcheck: test: - CMD - sh - /usr/sbin/rocketmq-ce - namesrv - -n - localhost:9876 interval: 30s timeout: 10s retries: 5 start_period: 30s rocketmq-broker: image: apache/rocketmq:5.1.4 container_name: erp-rocketmq-broker ports: - 10911:10911 environment: NAMESRV_ADDR: rocketmq:9876 JAVA_OPTS: -Xms1g -Xmx1g -Xmn512m volumes: - rocketmq_store:/home/rocketmq/store depends_on: - rocketmq networks: - erp-network command: sh mqbroker -n rocketmq:9876 -c ../conf/broker.conf rocketmq-console: image: apacherocketmq/rocketmq-dashboard:latest container_name: erp-rocketmq-console ports: - 8080:8080 environment: JAVA_OPTS: -Drocketmq.namesrv.addr=rocketmq:9876 -Dserver.port=8080 depends_on: - rocketmq networks: - erp-network seata: image: seataio/seata-server:1.7.1 container_name: erp-seata ports: - 8091:8091 - 7091:7091 environment: SEATA_IP: seata SEATA_PORT: '8091' STORE_MODE: db SERVER_NODE: '1' volumes: - ./infrastructure/seata/registry.conf:/seata-server/resources/registry.conf - ./infrastructure/seata/file.conf:/seata-server/resources/file.conf depends_on: mysql: condition: service_healthy nacos: condition: service_started networks: - erp-network skywalking-oap: image: apache/skywalking-oap-server:9.7.0 container_name: erp-skywalking-oap ports: - 11800:11800 - 12800:12800 environment: SW_STORAGE: elasticsearch7 SW_STORAGE_ES_CLUSTER_NODES: elasticsearch:9200 depends_on: elasticsearch: condition: service_healthy networks: - erp-network skywalking-ui: image: apache/skywalking-ui:9.7.0 container_name: erp-skywalking-ui ports: - 8081:8080 environment: SW_OAP_ADDRESS: skywalking-oap:12800 depends_on: - skywalking-oap networks: - erp-network elasticsearch: image: elasticsearch:7.17.16 container_name: erp-elasticsearch environment: discovery.type: single-node ES_JAVA_OPTS: -Xms512m -Xmx512m xpack.security.enabled: 'false' ports: - 9200:9200 - 9300:9300 volumes: - elasticsearch_data:/usr/share/elasticsearch/data networks: - erp-network healthcheck: test: - CMD - curl - -f - http://localhost:9200/_cluster/health interval: 15s timeout: 10s retries: 5 start_period: 60s minio: image: minio/minio:latest container_name: erp-minio ports: - 9000:9000 - 9001:9001 environment: MINIO_ROOT_USER: minioadmin MINIO_ROOT_PASSWORD: minioadmin123 volumes: - minio_data:/data command: server /data --console-address ":9001" networks: - erp-network healthcheck: test: - CMD - curl - -f - http://localhost:9000/minio/health/live interval: 15s timeout: 10s retries: 3 start_period: 30s gateway: build: context: ./gateway dockerfile: docker/Dockerfile container_name: erp-gateway ports: - 8080:8080 environment: - SPRING_PROFILES_ACTIVE=docker - NACOS_SERVER_ADDR=nacos:8848 - SPRING_CLOUD_NACOS_CONFIG_ENABLED=false - SPRING_CLOUD_NACOS_DISCOVERY_ENABLED=false - SPRING_CLOUD_CONFIG_ENABLED=false - NACOS_NAMESPACE=${NACOS_NAMESPACE:-public} - REDIS_HOST=redis - REDIS_PORT=6379 - REDIS_PASSWORD=redis123456 - JWT_SECRET=your-256-bit-secret-key-for-jwt-token-generation-erp - JAVA_OPTS=-Xms256m -Xmx512m -XX:+UseG1GC volumes: - gateway_logs:/app/logs networks: - erp-network healthcheck: test: - CMD - wget - --no-verbose - --tries=1 - --spider - http://localhost:8080/actuator/health interval: 30s timeout: 10s retries: 3 start_period: 60s restart: unless-stopped depends_on: nacos: condition: service_healthy redis: condition: service_healthy user-service: build: context: . dockerfile: services/user-service/Dockerfile container_name: erp-user-service ports: - 8082:8082 environment: - SPRING_PROFILES_ACTIVE=docker - NACOS_SERVER_ADDR=nacos:8848 - SPRING_CLOUD_NACOS_CONFIG_ENABLED=false - SPRING_CLOUD_NACOS_DISCOVERY_ENABLED=false - SPRING_CLOUD_CONFIG_ENABLED=false - NACOS_NAMESPACE=${NACOS_NAMESPACE:-public} - DB_HOST=mysql - DB_PORT=3306 - DB_NAME=erp_java - DB_USERNAME=erp_user - DB_PASSWORD=erp123456 - REDIS_HOST=redis - REDIS_PORT=6379 - REDIS_PASSWORD=redis123456 - JAVA_OPTS=-Xms512m -Xmx1024m -XX:+UseG1GC volumes: - user_logs:/app/logs networks: - erp-network healthcheck: test: - CMD - wget - --no-verbose - --tries=1 - --spider - http://localhost:8082/actuator/health interval: 30s timeout: 10s retries: 3 start_period: 60s restart: unless-stopped depends_on: mysql: condition: service_healthy redis: condition: service_healthy nacos: condition: service_healthy admin-service: build: context: . dockerfile: services/admin-service/Dockerfile container_name: erp-admin-service ports: - 8081:8081 environment: - SPRING_PROFILES_ACTIVE=docker - NACOS_SERVER_ADDR=nacos:8848 - SPRING_CLOUD_NACOS_CONFIG_ENABLED=false - SPRING_CLOUD_NACOS_DISCOVERY_ENABLED=false - SPRING_CLOUD_CONFIG_ENABLED=false - NACOS_NAMESPACE=${NACOS_NAMESPACE:-public} - DB_HOST=mysql - DB_PORT=3306 - DB_NAME=erp_java - DB_USERNAME=erp_user - DB_PASSWORD=erp123456 - REDIS_HOST=redis - REDIS_PORT=6379 - REDIS_PASSWORD=redis123456 - JAVA_OPTS=-Xms512m -Xmx1024m -XX:+UseG1GC volumes: - admin_logs:/app/logs networks: - erp-network healthcheck: test: - CMD - wget - --no-verbose - --tries=1 - --spider - http://localhost:8081/actuator/health interval: 30s timeout: 10s retries: 3 start_period: 60s restart: unless-stopped depends_on: mysql: condition: service_healthy redis: condition: service_healthy nacos: condition: service_healthy product-service: build: context: . dockerfile: services/product-service/Dockerfile container_name: erp-product-service ports: - 8083:8083 environment: - SPRING_PROFILES_ACTIVE=docker - NACOS_SERVER_ADDR=nacos:8848 - SPRING_CLOUD_NACOS_CONFIG_ENABLED=false - SPRING_CLOUD_NACOS_DISCOVERY_ENABLED=false - SPRING_CLOUD_CONFIG_ENABLED=false - NACOS_NAMESPACE=${NACOS_NAMESPACE:-public} - DB_HOST=mysql - DB_PORT=3306 - DB_NAME=erp_java - DB_USERNAME=erp_user - DB_PASSWORD=erp123456 - REDIS_HOST=redis - REDIS_PORT=6379 - REDIS_PASSWORD=redis123456 - JAVA_OPTS=-Xms512m -Xmx1024m -XX:+UseG1GC volumes: - product_logs:/app/logs networks: - erp-network healthcheck: test: - CMD - wget - --no-verbose - --tries=1 - --spider - http://localhost:8083/actuator/health interval: 30s timeout: 10s retries: 3 start_period: 60s restart: unless-stopped depends_on: mysql: condition: service_healthy redis: condition: service_healthy nacos: condition: service_healthy order-service: build: context: . dockerfile: services/order-service/Dockerfile container_name: erp-order-service ports: - 8084:8082 environment: - SPRING_PROFILES_ACTIVE=docker - NACOS_SERVER_ADDR=nacos:8848 - SPRING_CLOUD_NACOS_CONFIG_ENABLED=false - SPRING_CLOUD_NACOS_DISCOVERY_ENABLED=false - SPRING_CLOUD_CONFIG_ENABLED=false - NACOS_NAMESPACE=${NACOS_NAMESPACE:-public} - ORDER_SERVICE_PORT=8082 - DB_HOST=mysql - DB_PORT=3306 - DB_NAME=erp_java - DB_USERNAME=erp_user - DB_PASSWORD=erp123456 - REDIS_HOST=redis - REDIS_PORT=6379 - REDIS_PASSWORD=redis123456 - JAVA_OPTS=-Xms512m -Xmx1024m -XX:+UseG1GC volumes: - order_logs:/app/logs networks: - erp-network healthcheck: test: - CMD - wget - --no-verbose - --tries=1 - --spider - http://localhost:8082/actuator/health interval: 30s timeout: 10s retries: 3 start_period: 60s restart: unless-stopped depends_on: mysql: condition: service_healthy redis: condition: service_healthy nacos: condition: service_healthy inventory-service: build: context: . dockerfile: services/inventory-service/Dockerfile container_name: erp-inventory-service ports: - 8085:8084 environment: - SPRING_PROFILES_ACTIVE=docker - NACOS_SERVER_ADDR=nacos:8848 - SPRING_CLOUD_NACOS_CONFIG_ENABLED=false - SPRING_CLOUD_NACOS_DISCOVERY_ENABLED=false - SPRING_CLOUD_CONFIG_ENABLED=false - NACOS_NAMESPACE=${NACOS_NAMESPACE:-public} - DB_HOST=mysql - DB_PORT=3306 - DB_NAME=erp_java - DB_USERNAME=erp_user - DB_PASSWORD=erp123456 - REDIS_HOST=redis - REDIS_PORT=6379 - REDIS_PASSWORD=redis123456 - JAVA_OPTS=-Xms512m -Xmx1024m -XX:+UseG1GC volumes: - inventory_logs:/app/logs networks: - erp-network healthcheck: test: - CMD - wget - --no-verbose - --tries=1 - --spider - http://localhost:8084/actuator/health interval: 30s timeout: 10s retries: 3 start_period: 60s restart: unless-stopped depends_on: mysql: condition: service_healthy redis: condition: service_healthy nacos: condition: service_healthy tenant-service: build: context: . dockerfile: services/tenant-service/Dockerfile container_name: erp-tenant-service ports: - 8086:8083 environment: - SPRING_PROFILES_ACTIVE=docker - NACOS_SERVER_ADDR=nacos:8848 - SPRING_CLOUD_NACOS_CONFIG_ENABLED=false - SPRING_CLOUD_NACOS_DISCOVERY_ENABLED=false - SPRING_CLOUD_CONFIG_ENABLED=false - NACOS_NAMESPACE=${NACOS_NAMESPACE:-public} - DB_HOST=mysql - DB_PORT=3306 - DB_NAME=erp_java - DB_USERNAME=erp_user - DB_PASSWORD=erp123456 - REDIS_HOST=redis - REDIS_PORT=6379 - REDIS_PASSWORD=redis123456 - JAVA_OPTS=-Xms512m -Xmx1024m -XX:+UseG1GC volumes: - tenant_logs:/app/logs networks: - erp-network healthcheck: test: - CMD - wget - --no-verbose - --tries=1 - --spider - http://localhost:8083/actuator/health interval: 30s timeout: 10s retries: 3 start_period: 60s restart: unless-stopped depends_on: mysql: condition: service_healthy redis: condition: service_healthy nacos: condition: service_healthy file-service: build: context: . dockerfile: services/file-service/Dockerfile container_name: erp-file-service ports: - 8090:8082 environment: - SPRING_PROFILES_ACTIVE=docker - NACOS_SERVER_ADDR=nacos:8848 - SPRING_CLOUD_NACOS_CONFIG_ENABLED=false - SPRING_CLOUD_NACOS_DISCOVERY_ENABLED=false - SPRING_CLOUD_CONFIG_ENABLED=false - NACOS_NAMESPACE=${NACOS_NAMESPACE:-public} - DB_HOST=mysql - DB_PORT=3306 - DB_NAME=erp_java - DB_USERNAME=erp_user - DB_PASSWORD=erp123456 - MINIO_ENDPOINT=http://minio:9000 - MINIO_ACCESS_KEY=minioadmin - MINIO_SECRET_KEY=minioadmin123 - JAVA_OPTS=-Xms512m -Xmx1024m -XX:+UseG1GC volumes: - file_logs:/app/logs - file_storage:/app/storage networks: - erp-network healthcheck: test: - CMD - wget - --no-verbose - --tries=1 - --spider - http://localhost:8082/actuator/health interval: 30s timeout: 10s retries: 3 start_period: 60s restart: unless-stopped depends_on: mysql: condition: service_healthy minio: condition: service_healthy nacos: condition: service_healthy scheduled-task-service: build: context: . dockerfile: services/scheduled-task-service/Dockerfile container_name: erp-scheduled-task-service ports: - 8091:8088 environment: - SPRING_PROFILES_ACTIVE=docker - NACOS_SERVER_ADDR=nacos:8848 - SPRING_CLOUD_NACOS_CONFIG_ENABLED=false - SPRING_CLOUD_NACOS_DISCOVERY_ENABLED=false - SPRING_CLOUD_CONFIG_ENABLED=false - NACOS_NAMESPACE=${NACOS_NAMESPACE:-public} - DB_HOST=mysql - DB_PORT=3306 - DB_NAME=erp_java - DB_USERNAME=erp_user - DB_PASSWORD=erp123456 - REDIS_HOST=redis - REDIS_PORT=6379 - REDIS_PASSWORD=redis123456 - JAVA_OPTS=-Xms512m -Xmx1024m -XX:+UseG1GC volumes: - task_logs:/app/logs networks: - erp-network healthcheck: test: - CMD - wget - --no-verbose - --tries=1 - --spider - http://localhost:8088/actuator/health interval: 30s timeout: 10s retries: 3 start_period: 60s restart: unless-stopped depends_on: mysql: condition: service_healthy redis: condition: service_healthy nacos: condition: service_healthy networks: erp-network: driver: bridge ipam: config: - subnet: 172.20.0.0/16 volumes: mysql_data: null redis_data: null nacos_logs: null nacos_data: null rocketmq_logs: null rocketmq_store: null elasticsearch_data: null minio_data: null gateway_logs: null user_logs: null admin_logs: null product_logs: null order_logs: null inventory_logs: null tenant_logs: null file_logs: null file_storage: null task_logs: null