在Windows 11上高效部署若依前后端分离项目的Docker全流程指南对于Windows开发者而言将若依这类企业级前后端分离项目部署到本地环境进行开发和测试往往面临诸多挑战。本文将手把手带你完成从零开始的完整部署流程涵盖Docker环境配置、自定义网络搭建、镜像优化等核心环节特别针对Win11系统进行深度适配和问题预防。1. 环境准备与Docker配置优化在Windows 11上使用Docker Desktop需要先确保系统满足基本要求必须是Win10 2004及以上版本Build 19041及以上或Windows 11 21H2及以上版本。建议物理内存至少8GB并开启BIOS中的虚拟化支持Intel VT-x或AMD-V。WSL2的安装与配置是首要步骤以管理员身份打开PowerShell执行wsl --install安装完成后重启系统设置WSL2为默认版本wsl --set-default-version 2提示如果遇到WSL 2 requires an update to its kernel component错误需要下载并安装最新的WSL2内核更新包。Docker Desktop的安装后优化至关重要进入Settings Resources WSL Integration启用Enable integration with my default WSL distro在Docker Engine配置中添加国内镜像源加速{ registry-mirrors: [ https://hub-mirror.c.163.com, https://mirror.baidubce.com ] }调整内存分配建议至少4GB和CPU核心数建议4核以上2. 项目结构与Docker化准备从Gitee克隆若依前后端分离项目git clone https://gitee.com/y_project/RuoYi-Vue.git项目结构关键说明RuoYi-Vue/ ├── ruoyi-admin # 后端Spring Boot项目 │ └── src/main/resources/application-docker.yml # Docker专用配置 ├── ruoyi-ui # 前端Vue项目 │ └── nginx/ # Nginx自定义配置目录 └── docker/ # 存放所有Docker相关文件后端关键配置调整修改application-docker.yml中的数据库和Redis连接信息spring: datasource: url: jdbc:mysql://ruoyi-db:3306/ry-vue?useSSLfalse username: root password: 123456 redis: host: ruoyi-redis port: 6379前端代理配置优化 在ruoyi-ui/nginx/nginx.conf中确保代理设置正确location /prod-api/ { proxy_pass http://ruoyi-backend:8848/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; }3. 容器网络设计与编排策略自定义网络创建是确保容器间通信的关键docker network create ruoyi-net --driver bridge --subnet 172.28.0.0/16网络拓扑规划容器名称服务类型暴露端口网络别名ruoyi-dbMySQL 5.73306ruoyi-dbruoyi-redisRedis 76379ruoyi-redisruoyi-backendSpring Boot8848ruoyi-backendruoyi-nginxNginx80ruoyi-nginx数据持久化方案docker volume create ruoyi-mysql-data docker volume create ruoyi-redis-data4. 多容器Docker Compose编排创建docker-compose.yml实现一键部署version: 3.8 services: ruoyi-db: image: mysql:5.7 container_name: ruoyi-db environment: MYSQL_ROOT_PASSWORD: 123456 MYSQL_DATABASE: ry-vue volumes: - ruoyi-mysql-data:/var/lib/mysql - ./sql:/docker-entrypoint-initdb.d networks: - ruoyi-net healthcheck: test: [CMD, mysqladmin, ping, -h, localhost] interval: 10s timeout: 5s retries: 3 ruoyi-redis: image: redis:7 container_name: ruoyi-redis command: redis-server --appendonly yes volumes: - ruoyi-redis-data:/data networks: - ruoyi-net healthcheck: test: [CMD, redis-cli, ping] interval: 5s timeout: 3s retries: 3 ruoyi-backend: build: context: ../ruoyi-admin dockerfile: Dockerfile container_name: ruoyi-backend depends_on: ruoyi-db: condition: service_healthy ruoyi-redis: condition: service_healthy environment: SPRING_PROFILES_ACTIVE: docker ports: - 8848:8848 networks: - ruoyi-net ruoyi-nginx: build: context: ../ruoyi-ui dockerfile: Dockerfile container_name: ruoyi-nginx depends_on: ruoyi-backend: condition: service_healthy ports: - 80:80 networks: - ruoyi-net volumes: ruoyi-mysql-data: ruoyi-redis-data: networks: ruoyi-net: external: true5. 构建优化与调试技巧前端Dockerfile优化ruoyi-ui/DockerfileFROM nginx:1.22-alpine # 设置构建阶段 FROM node:16 as builder WORKDIR /app COPY package*.json ./ RUN npm install COPY . . RUN npm run build:prod # 生产阶段 FROM nginx:1.22-alpine COPY --frombuilder /app/dist /usr/share/nginx/html COPY nginx/nginx.conf /etc/nginx/conf.d/default.conf EXPOSE 80 CMD [nginx, -g, daemon off;]后端Dockerfile优化ruoyi-admin/DockerfileFROM openjdk:8-jdk-alpine as builder WORKDIR /app COPY . . RUN ./mvnw clean package -DskipTests FROM openjdk:8-jre-alpine WORKDIR /app COPY --frombuilder /app/target/ruoyi-admin.jar . EXPOSE 8848 ENTRYPOINT [java, -jar, ruoyi-admin.jar]常见问题排查命令# 查看容器日志 docker logs -f ruoyi-backend # 进入容器调试 docker exec -it ruoyi-backend sh # 检查网络连通性 docker run --rm --network ruoyi-net busybox ping ruoyi-db # 查看端口映射 docker port ruoyi-nginx6. 性能调优与开发效率提升Windows特有路径映射优化volumes: - type: bind source: /mnt/c/Dev/RuoYi-Vue/ruoyi-admin/target target: /app read_only: true开发模式热部署配置后端热加载docker run -d \ -v ${PWD}/ruoyi-admin:/app \ -v ${HOME}/.m2:/root/.m2 \ -p 8848:8848 \ --name ruoyi-backend-dev \ --network ruoyi-net \ openjdk:8-jdk \ ./mvnw spring-boot:run前端热加载docker run -d \ -v ${PWD}/ruoyi-ui:/app \ -p 8080:8080 \ --name ruoyi-ui-dev \ node:16 \ npm run dev资源监控与优化# 查看容器资源使用情况 docker stats # 性能分析 docker run -it --rm --pid container:ruoyi-backend alpine top
保姆级教程:在Win11上用Docker Desktop完整部署若依前后端分离项目(含Dockerfile与网络配置)
在Windows 11上高效部署若依前后端分离项目的Docker全流程指南对于Windows开发者而言将若依这类企业级前后端分离项目部署到本地环境进行开发和测试往往面临诸多挑战。本文将手把手带你完成从零开始的完整部署流程涵盖Docker环境配置、自定义网络搭建、镜像优化等核心环节特别针对Win11系统进行深度适配和问题预防。1. 环境准备与Docker配置优化在Windows 11上使用Docker Desktop需要先确保系统满足基本要求必须是Win10 2004及以上版本Build 19041及以上或Windows 11 21H2及以上版本。建议物理内存至少8GB并开启BIOS中的虚拟化支持Intel VT-x或AMD-V。WSL2的安装与配置是首要步骤以管理员身份打开PowerShell执行wsl --install安装完成后重启系统设置WSL2为默认版本wsl --set-default-version 2提示如果遇到WSL 2 requires an update to its kernel component错误需要下载并安装最新的WSL2内核更新包。Docker Desktop的安装后优化至关重要进入Settings Resources WSL Integration启用Enable integration with my default WSL distro在Docker Engine配置中添加国内镜像源加速{ registry-mirrors: [ https://hub-mirror.c.163.com, https://mirror.baidubce.com ] }调整内存分配建议至少4GB和CPU核心数建议4核以上2. 项目结构与Docker化准备从Gitee克隆若依前后端分离项目git clone https://gitee.com/y_project/RuoYi-Vue.git项目结构关键说明RuoYi-Vue/ ├── ruoyi-admin # 后端Spring Boot项目 │ └── src/main/resources/application-docker.yml # Docker专用配置 ├── ruoyi-ui # 前端Vue项目 │ └── nginx/ # Nginx自定义配置目录 └── docker/ # 存放所有Docker相关文件后端关键配置调整修改application-docker.yml中的数据库和Redis连接信息spring: datasource: url: jdbc:mysql://ruoyi-db:3306/ry-vue?useSSLfalse username: root password: 123456 redis: host: ruoyi-redis port: 6379前端代理配置优化 在ruoyi-ui/nginx/nginx.conf中确保代理设置正确location /prod-api/ { proxy_pass http://ruoyi-backend:8848/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; }3. 容器网络设计与编排策略自定义网络创建是确保容器间通信的关键docker network create ruoyi-net --driver bridge --subnet 172.28.0.0/16网络拓扑规划容器名称服务类型暴露端口网络别名ruoyi-dbMySQL 5.73306ruoyi-dbruoyi-redisRedis 76379ruoyi-redisruoyi-backendSpring Boot8848ruoyi-backendruoyi-nginxNginx80ruoyi-nginx数据持久化方案docker volume create ruoyi-mysql-data docker volume create ruoyi-redis-data4. 多容器Docker Compose编排创建docker-compose.yml实现一键部署version: 3.8 services: ruoyi-db: image: mysql:5.7 container_name: ruoyi-db environment: MYSQL_ROOT_PASSWORD: 123456 MYSQL_DATABASE: ry-vue volumes: - ruoyi-mysql-data:/var/lib/mysql - ./sql:/docker-entrypoint-initdb.d networks: - ruoyi-net healthcheck: test: [CMD, mysqladmin, ping, -h, localhost] interval: 10s timeout: 5s retries: 3 ruoyi-redis: image: redis:7 container_name: ruoyi-redis command: redis-server --appendonly yes volumes: - ruoyi-redis-data:/data networks: - ruoyi-net healthcheck: test: [CMD, redis-cli, ping] interval: 5s timeout: 3s retries: 3 ruoyi-backend: build: context: ../ruoyi-admin dockerfile: Dockerfile container_name: ruoyi-backend depends_on: ruoyi-db: condition: service_healthy ruoyi-redis: condition: service_healthy environment: SPRING_PROFILES_ACTIVE: docker ports: - 8848:8848 networks: - ruoyi-net ruoyi-nginx: build: context: ../ruoyi-ui dockerfile: Dockerfile container_name: ruoyi-nginx depends_on: ruoyi-backend: condition: service_healthy ports: - 80:80 networks: - ruoyi-net volumes: ruoyi-mysql-data: ruoyi-redis-data: networks: ruoyi-net: external: true5. 构建优化与调试技巧前端Dockerfile优化ruoyi-ui/DockerfileFROM nginx:1.22-alpine # 设置构建阶段 FROM node:16 as builder WORKDIR /app COPY package*.json ./ RUN npm install COPY . . RUN npm run build:prod # 生产阶段 FROM nginx:1.22-alpine COPY --frombuilder /app/dist /usr/share/nginx/html COPY nginx/nginx.conf /etc/nginx/conf.d/default.conf EXPOSE 80 CMD [nginx, -g, daemon off;]后端Dockerfile优化ruoyi-admin/DockerfileFROM openjdk:8-jdk-alpine as builder WORKDIR /app COPY . . RUN ./mvnw clean package -DskipTests FROM openjdk:8-jre-alpine WORKDIR /app COPY --frombuilder /app/target/ruoyi-admin.jar . EXPOSE 8848 ENTRYPOINT [java, -jar, ruoyi-admin.jar]常见问题排查命令# 查看容器日志 docker logs -f ruoyi-backend # 进入容器调试 docker exec -it ruoyi-backend sh # 检查网络连通性 docker run --rm --network ruoyi-net busybox ping ruoyi-db # 查看端口映射 docker port ruoyi-nginx6. 性能调优与开发效率提升Windows特有路径映射优化volumes: - type: bind source: /mnt/c/Dev/RuoYi-Vue/ruoyi-admin/target target: /app read_only: true开发模式热部署配置后端热加载docker run -d \ -v ${PWD}/ruoyi-admin:/app \ -v ${HOME}/.m2:/root/.m2 \ -p 8848:8848 \ --name ruoyi-backend-dev \ --network ruoyi-net \ openjdk:8-jdk \ ./mvnw spring-boot:run前端热加载docker run -d \ -v ${PWD}/ruoyi-ui:/app \ -p 8080:8080 \ --name ruoyi-ui-dev \ node:16 \ npm run dev资源监控与优化# 查看容器资源使用情况 docker stats # 性能分析 docker run -it --rm --pid container:ruoyi-backend alpine top