224 lines
6.2 KiB
YAML
224 lines
6.2 KiB
YAML
# Docker Compose开发环境配置文件
|
|
# 若依框架前后端分离Docker部署方案 - 开发环境
|
|
# Requirements: 5.3, 6.5
|
|
|
|
version: '3.8'
|
|
|
|
services:
|
|
# Redis缓存服务 - 开发环境配置
|
|
anxin-redis:
|
|
image: redis:7.2-alpine
|
|
container_name: anxin-redis-dev
|
|
restart: unless-stopped
|
|
environment:
|
|
TZ: Asia/Shanghai
|
|
ports:
|
|
- "${REDIS_PORT:-6379}:6379"
|
|
volumes:
|
|
- redis-data-dev:/data
|
|
- redis-logs-dev:/var/log/redis
|
|
networks:
|
|
- anxin-dev-network
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
memory: ${REDIS_MEMORY_LIMIT:-128M}
|
|
cpus: '${REDIS_CPU_LIMIT:-0.25}'
|
|
healthcheck:
|
|
test: ["CMD", "redis-cli", "ping"]
|
|
timeout: 10s
|
|
retries: 5
|
|
interval: 30s
|
|
start_period: 30s
|
|
command: redis-server --appendonly yes --maxmemory 100mb --maxmemory-policy allkeys-lru
|
|
|
|
# MySQL数据库服务 - 开发环境配置
|
|
anxin-mysql:
|
|
image: mysql:8.0.36
|
|
container_name: anxin-mysql-dev
|
|
restart: unless-stopped
|
|
environment:
|
|
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-dev_root_password}
|
|
MYSQL_DATABASE: ${DB_NAME:-anxin_dev}
|
|
MYSQL_USER: ${DB_USER:-anxin_dev}
|
|
MYSQL_PASSWORD: ${DB_PASSWORD:-dev_password}
|
|
TZ: Asia/Shanghai
|
|
ports:
|
|
- "${DB_PORT:-3306}:3306"
|
|
volumes:
|
|
- mysql-data-dev:/var/lib/mysql
|
|
- ./database/init:/docker-entrypoint-initdb.d:ro
|
|
- ./configs/my.cnf.dev:/etc/mysql/conf.d/my.cnf:ro
|
|
- mysql-logs-dev:/var/log/mysql
|
|
networks:
|
|
- anxin-dev-network
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
memory: ${DATABASE_MEMORY_LIMIT:-256M}
|
|
cpus: '${DATABASE_CPU_LIMIT:-0.25}'
|
|
healthcheck:
|
|
test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-p${MYSQL_ROOT_PASSWORD:-dev_root_password}"]
|
|
timeout: 20s
|
|
retries: 10
|
|
interval: 30s
|
|
start_period: 60s
|
|
|
|
# Spring Boot后端服务 - 开发环境配置
|
|
anxin-backend:
|
|
build:
|
|
context: ../
|
|
dockerfile: docker/backend/Dockerfile
|
|
target: development
|
|
image: anxin-backend:dev
|
|
container_name: anxin-backend-dev
|
|
restart: unless-stopped
|
|
environment:
|
|
SPRING_PROFILES_ACTIVE: ${SPRING_PROFILES_ACTIVE:-dev}
|
|
SPRING_DATASOURCE_URL: jdbc:mysql://anxin-mysql:3306/${DB_NAME:-anxin_dev}?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8
|
|
SPRING_DATASOURCE_USERNAME: ${DB_USER:-anxin_dev}
|
|
SPRING_DATASOURCE_PASSWORD: ${DB_PASSWORD:-dev_password}
|
|
JAVA_OPTS: ${JAVA_OPTS:--Xms256m -Xmx512m -Djava.security.egd=file:/dev/./urandom}
|
|
LOG_LEVEL: ${LOG_LEVEL:-DEBUG}
|
|
TZ: Asia/Shanghai
|
|
# 开发环境特有配置
|
|
SPRING_DEVTOOLS_RESTART_ENABLED: true
|
|
SPRING_DEVTOOLS_LIVERELOAD_ENABLED: true
|
|
LOGGING_LEVEL_COM_RUOYI: DEBUG
|
|
LOGGING_LEVEL_ROOT: DEBUG
|
|
ports:
|
|
- "${BACKEND_PORT:-8080}:8080"
|
|
- "35729:35729" # LiveReload端口
|
|
volumes:
|
|
- backend-logs-dev:/app/logs
|
|
- backend-uploads-dev:/app/uploadPath
|
|
- ./configs:/app/config:ro
|
|
# 开发环境代码热重载
|
|
- ../ruoyi-admin/src:/app/src:ro
|
|
networks:
|
|
- anxin-dev-network
|
|
depends_on:
|
|
anxin-mysql:
|
|
condition: service_healthy
|
|
anxin-redis:
|
|
condition: service_healthy
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
memory: ${BACKEND_MEMORY_LIMIT:-512M}
|
|
cpus: '${BACKEND_CPU_LIMIT:-0.5}'
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "curl -f http://localhost:8080/actuator/health || exit 1"]
|
|
timeout: 30s
|
|
retries: 5
|
|
interval: 30s
|
|
start_period: 90s
|
|
|
|
# Vue3前端服务 - 开发环境配置
|
|
anxin-frontend:
|
|
build:
|
|
context: ../
|
|
dockerfile: docker/frontend/Dockerfile
|
|
target: development
|
|
args:
|
|
API_BASE_URL: ${API_BASE_URL:-http://localhost:8080}
|
|
NODE_ENV: development
|
|
image: anxin-frontend:dev
|
|
container_name: anxin-frontend-dev
|
|
restart: unless-stopped
|
|
environment:
|
|
TZ: Asia/Shanghai
|
|
NODE_ENV: development
|
|
ports:
|
|
- "${FRONTEND_PORT:-3000}:80"
|
|
- "24678:24678" # Vite HMR端口
|
|
volumes:
|
|
- frontend-logs-dev:/var/log/nginx
|
|
- ./configs/nginx.conf.dev:/etc/nginx/conf.d/default.conf:ro
|
|
# 开发环境源码挂载用于热重载
|
|
- ../RuoYi-Vue3/src:/app/src:ro
|
|
networks:
|
|
- anxin-dev-network
|
|
depends_on:
|
|
anxin-backend:
|
|
condition: service_healthy
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
memory: ${FRONTEND_MEMORY_LIMIT:-128M}
|
|
cpus: '${FRONTEND_CPU_LIMIT:-0.25}'
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "curl -f http://localhost/ || exit 1"]
|
|
timeout: 10s
|
|
retries: 3
|
|
interval: 30s
|
|
start_period: 30s
|
|
|
|
# 网络配置 - 开发环境
|
|
networks:
|
|
anxin-dev-network:
|
|
name: ${NETWORK_NAME:-anxin-dev-network}
|
|
driver: bridge
|
|
ipam:
|
|
driver: default
|
|
config:
|
|
- subnet: ${SUBNET:-172.21.0.0/16}
|
|
gateway: ${GATEWAY:-172.21.0.1}
|
|
|
|
# 卷配置 - 开发环境
|
|
volumes:
|
|
# Redis数据持久化卷
|
|
redis-data-dev:
|
|
driver: local
|
|
driver_opts:
|
|
type: none
|
|
o: bind
|
|
device: ${REDIS_DATA_PATH:-./data/development/redis}
|
|
|
|
# Redis日志卷
|
|
redis-logs-dev:
|
|
driver: local
|
|
driver_opts:
|
|
type: none
|
|
o: bind
|
|
device: ${REDIS_LOG_PATH:-./data/development/redis-logs}
|
|
|
|
# 数据库数据持久化卷
|
|
mysql-data-dev:
|
|
driver: local
|
|
driver_opts:
|
|
type: none
|
|
o: bind
|
|
device: ${MYSQL_DATA_PATH:-./data/development/mysql}
|
|
|
|
# 数据库日志卷
|
|
mysql-logs-dev:
|
|
driver: local
|
|
driver_opts:
|
|
type: none
|
|
o: bind
|
|
device: ${MYSQL_LOG_PATH:-./data/development/mysql-logs}
|
|
|
|
# 后端应用日志卷
|
|
backend-logs-dev:
|
|
driver: local
|
|
driver_opts:
|
|
type: none
|
|
o: bind
|
|
device: ${BACKEND_LOG_PATH:-./data/development/backend-logs}
|
|
|
|
# 后端文件上传卷
|
|
backend-uploads-dev:
|
|
driver: local
|
|
driver_opts:
|
|
type: none
|
|
o: bind
|
|
device: ${BACKEND_UPLOAD_PATH:-./data/development/uploads}
|
|
|
|
# 前端Nginx日志卷
|
|
frontend-logs-dev:
|
|
driver: local
|
|
driver_opts:
|
|
type: none
|
|
o: bind
|
|
device: ${FRONTEND_LOG_PATH:-./data/development/nginx-logs} |