version: '3.8'

services:

  # ===================== MySQL =====================
  mysql:
    image: mysql:8.0.27
    container_name: mysql
    restart: always
    privileged: true
    environment:
      MYSQL_ROOT_PASSWORD: 123456
      TZ: Asia/Shanghai
    ports:
      - "3306:3306"
    volumes:
      - /home/study/mysql/log:/var/log/mysql
      - /home/study/mysql/data:/var/lib/mysql
      - /home/study/mysql/conf:/etc/mysql/conf.d
      - /etc/localtime:/etc/localtime:ro
    command:
      - --default-authentication-plugin=mysql_native_password
      - --lower_case_table_names=1
    networks:
      - app-net

  # ===================== Redis =====================
  redis:
    image: redis:latest
    container_name: redis
    restart: unless-stopped
    ports:
      - "6379:6379"
    volumes:
      - /home/study/redis/data:/data
      - /home/study/redis/conf/redis.conf:/etc/redis/redis.conf
    command: ["redis-server", "/etc/redis/redis.conf"]
    networks:
      - app-net

  # ===================== Nacos =====================
  nacos:
    image: nacos/nacos-server:v2.3.2
    container_name: nacos
    restart: always
    environment:
      MODE: standalone
      TZ: Asia/Shanghai
    ports:
      - "8848:8848"
      - "9848:9848"
      - "9849:9849"
    volumes:
      - /home/study/nacos/data:/home/nacos/data
      - /home/study/nacos/logs:/home/nacos/logs
    networks:
      - app-net

  # ===================== Light(Java 后端) =====================
  light:
    build:
      context: /home/study/apps/light
      dockerfile: Dockerfile
    container_name: light
    restart: unless-stopped
    ports:
      - "8086:8086"
    environment:
      TZ: Asia/Shanghai
      SERVER_PORT: 8086
    depends_on:
      - mysql
      - redis
      - nacos
    volumes:
      # 将宿主机的 files 目录挂载到容器内的 /usr/local/bin/upload 目录
      - /home/study/apps/light/files:/usr/local/bin/upload
    networks:
      - app-net

  # ===================== RuoYi 前端(独立容器) =====================
  ruoyi:
    build:
      context: /home/study/apps/ruoyi  
      dockerfile: Dockerfile               
    container_name: ruoyi
    restart: unless-stopped
    ports:
      - "8088:80"  # 前端独立端口
    networks:
      - app-net

   # ===================== Nginx =====================
  nginx:
    image: nginx:1.18.0
    container_name: nginx
    restart: unless-stopped
    ports:
      - "9002:80"  
    volumes:
      - /home/study/nginx/conf/nginx.conf:/etc/nginx/nginx.conf:ro
      - /home/study/nginx/log:/var/log/nginx
    depends_on:
      - ruoyi
      - light
    networks:
      - app-net

# ===================== Networks =====================
networks:
  app-net:
    driver: bridge

Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐