若依前端使用docker部署
要将若依(RuoYi)前端项目部署到 Docker 中,可通过 Nginx 容器静态托管 的方式实现。以下是详细步骤:
步骤 1:准备前端构建产物
首先需要将若依前端项目打包为静态文件:
- 进入
ruoyi-ui目录:bash
cd D:\Code\RuoYi-Vue\ruoyi-ui - 执行生产环境构建命令:
bash
构建完成后,会在npm run build:prodruoyi-ui目录下生成dist文件夹,里面是前端静态资源(HTML、CSS、JS 等)。
步骤 2:编写 Nginx 配置文件
创建 nginx.conf 文件(与 Dockerfile 同目录),用于配置 Nginx 静态资源托管和反向代理后端接口:
nginx
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
keepalive_timeout 65;
server {
listen 81; # 前端访问端口,可自定义
server_name localhost;
# 静态资源托管(指向前端构建产物目录)
location / {
root /opt/project/vacation/vacation-front;
index index.html index.htm;
try_files $uri $uri/ /index.html; # 解决 Vue 路由刷新 404 问题
}
# 反向代理后端接口(替换为你的后端服务地址)
location /prod-api/ {
proxy_pass http://ruoyi-backend-service:8081/; # 后端服务名:端口(需与后端 Docker 配置一致)
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
}
步骤 3:编写 Dockerfile
在 ruoyi-ui/dist 目录下创建 Dockerfile,用于构建前端镜像:
dockerfile
# 基础镜像:Nginx
FROM nginx:1.18.0
# 复制 Nginx 配置文件
COPY nginx.conf /etc/nginx/nginx.conf
# 创建前端资源存放目录
RUN mkdir -p /opt/project/vacation/vacation-front
# 复制前端构建产物到容器内
COPY . /opt/project/vacation/vacation-front
# 暴露端口(与 Nginx 配置的 listen 端口一致)
EXPOSE 81
步骤 4:构建前端 Docker 镜像
在 ruoyi-ui/dist 目录下执行构建命令:
bash
docker build -t ruoyi-front:1.0 .
步骤 5:启动前端容器(配合后端服务)
若依前端需要依赖后端接口,建议通过 Docker Compose 统一管理服务,确保网络连通性:
-
在项目根目录创建
docker-compose.yml:yaml
version: '3' networks: ruoyi-network: # 自定义网络,确保前后端在同一网络 driver: bridge services: # 后端服务(需先构建后端镜像,参考之前的后端 Docker 配置) backend: container_name: ruoyi-backend-service image: ruoyi-backend:1.0 ports: - "8081:8081" networks: - ruoyi-network # 后端环境变量(数据库、Redis 配置,需根据实际情况填写) environment: - SPRING_DATASOURCE_URL=jdbc:mysql://你的MySQL地址:3307/ry-vue?... - SPRING_DATASOURCE_USERNAME=root - SPRING_DATASOURCE_PASSWORD=你的密码 - SPRING_REDIS_HOST=你的Redis地址 - SPRING_REDIS_PORT=6379 # 前端服务 front: container_name: ruoyi-front image: ruoyi-front:1.0 ports: - "81:81" networks: - ruoyi-network depends_on: - backend # 确保后端启动后再启动前端 -
启动所有服务:
bash
docker compose up -d
验证部署
打开浏览器访问 http://localhost:81,若能正常显示若依前端页面且能调用后端接口,说明部署成功。
总结
若依前端 Docker 部署的核心是 Nginx 静态托管 + 反向代理,通过 Docker 网络确保前后端连通。若需单独启动前端容器,需将 proxy_pass 中的后端地址替换为实际的主机 IP 或后端容器 IP。
哪错了,docker run -d --name vacation-front --networks vacation-network -p 82:82 vacation-front:1.0
命令中的错误在于 --networks 是 Docker Compose 的语法,直接用 docker run 时应使用 --network(单数形式)。正确命令如下:
bash
docker run -d --name vacation-front --network vacation-network -p 82:82 vacation-front:1.0
错误原因解析:
docker run命令中指定网络的参数是--network(单数),用于将容器加入已存在的网络。--networks(复数)是 Docker Compose 配置文件(docker-compose.yml)中的语法,不能直接用于docker run命令。
补充检查步骤:
-
确保网络
vacation-network已存在,若不存在需先创建:bash
docker network create vacation-network -
启动后可通过以下命令验证容器是否加入网络:
bash
docker network inspect vacation-network | grep "vacation-front"
修改后重新执行命令即可正常启动容器并加入指定网络。
更多推荐
所有评论(0)