agricultural-sock-amalysis/docker-compose.yml

164 lines
3.9 KiB
YAML

version: '3.8'
services:
# MySQL数据库
mysql:
image: mysql:8.0
container_name: agricultural-mysql
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: 123456
MYSQL_DATABASE: agricultural_stock
MYSQL_USER: agricultural
MYSQL_PASSWORD: agricultural123
ports:
- "3306:3306"
volumes:
- mysql_data:/var/lib/mysql
- ./sql/init.sql:/docker-entrypoint-initdb.d/init.sql
command: --default-authentication-plugin=mysql_native_password
networks:
- agricultural-network
# Redis缓存
redis:
image: redis:7-alpine
container_name: agricultural-redis
restart: unless-stopped
ports:
- "6379:6379"
volumes:
- redis_data:/data
networks:
- agricultural-network
# Kafka相关服务已移除
# Spring Boot后端服务
backend:
build:
context: ./backend
dockerfile: Dockerfile
container_name: agricultural-backend
restart: unless-stopped
depends_on:
- mysql
- redis
environment:
SPRING_PROFILES_ACTIVE: docker
SPRING_DATASOURCE_URL: jdbc:mysql://mysql:3306/agricultural_stock?useSSL=false&serverTimezone=Asia/Shanghai
SPRING_DATASOURCE_USERNAME: root
SPRING_DATASOURCE_PASSWORD: 123456
SPRING_REDIS_HOST: redis
SPRING_REDIS_PORT: 6379
# Kafka配置已移除
ports:
- "8080:8080"
volumes:
- backend_logs:/app/logs
networks:
- agricultural-network
# Vue.js前端服务
frontend:
build:
context: ./frontend
dockerfile: Dockerfile
container_name: agricultural-frontend
restart: unless-stopped
depends_on:
- backend
ports:
- "3000:80"
networks:
- agricultural-network
# Python数据采集服务
data-collector:
build:
context: ./data-collector
dockerfile: Dockerfile
container_name: agricultural-collector
restart: unless-stopped
depends_on:
- mysql
environment:
DB_HOST: mysql
DB_PORT: 3306
DB_NAME: agricultural_stock
DB_USER: root
DB_PASSWORD: 123456
# Kafka配置已移除
volumes:
- collector_logs:/app/logs
networks:
- agricultural-network
# Spark数据处理服务
spark-master:
image: bitnami/spark:3.4
container_name: agricultural-spark-master
restart: unless-stopped
environment:
- SPARK_MODE=master
- SPARK_RPC_AUTHENTICATION_ENABLED=no
- SPARK_RPC_ENCRYPTION_ENABLED=no
- SPARK_LOCAL_STORAGE_ENCRYPTION_ENABLED=no
- SPARK_SSL_ENABLED=no
ports:
- "8081:8080"
- "7077:7077"
volumes:
- spark_data:/opt/bitnami/spark/data
- ./spark-processor:/app
networks:
- agricultural-network
spark-worker:
image: bitnami/spark:3.4
container_name: agricultural-spark-worker
restart: unless-stopped
depends_on:
- spark-master
environment:
- SPARK_MODE=worker
- SPARK_MASTER_URL=spark://spark-master:7077
- SPARK_WORKER_MEMORY=2G
- SPARK_WORKER_CORES=2
- SPARK_RPC_AUTHENTICATION_ENABLED=no
- SPARK_RPC_ENCRYPTION_ENABLED=no
- SPARK_LOCAL_STORAGE_ENCRYPTION_ENABLED=no
- SPARK_SSL_ENABLED=no
volumes:
- spark_data:/opt/bitnami/spark/data
- ./spark-processor:/app
networks:
- agricultural-network
# Jupyter Notebook (用于LSTM模型开发)
jupyter:
image: jupyter/tensorflow-notebook:latest
container_name: agricultural-jupyter
restart: unless-stopped
ports:
- "8888:8888"
environment:
JUPYTER_ENABLE_LAB: "yes"
volumes:
- jupyter_data:/home/jovyan/work
- ./ml-predictor:/home/jovyan/work/ml-predictor
networks:
- agricultural-network
volumes:
mysql_data:
redis_data:
# Kafka volumes已移除
backend_logs:
collector_logs:
spark_data:
jupyter_data:
networks:
agricultural-network:
driver: bridge