基于若依RuoYi-Vue3-FastAPI 的 Docker 部署记录

        最近在参与导师项目开发过程中,我选择基于若依 FastAPI + Vue3 模板作为系统框架,通过 Docker 实现前后端、数据库和缓存环境的容器化部署。
RuoYi-Vue3-FastAPI的github地址:https://github.com/insistence/RuoYi-Vue3-FastAPI

 

🛠 使用的技术栈

  • 🐍 FastAPI(基于若依后端模板)

  • 🖼 Vue3 + Vite

  • 🐘 PostgreSQL

  • 🧊 Redis

  • 🐳 Docker / Docker Compose

🧱 结构

docker-project/
├── docker-compose.yml
├── backend/
│   ├── Dockerfile
│   ├── .env.prod            # 后端环境变量配置
│   ├── requirements-pg.txt
│   └── app/                 # FastAPI 项目代码
│   └── sql/             # 初始化数据库 SQL 脚本
├── frontend/
│   ├── Dockerfile
│   ├── dist/                # 打包后前端文件
│   └── nginx.conf           # Nginx 配置

 下面是核心配置的内容:

⚙️ docker-compose.yml

version: "3.8"

services:
  frontend:
    build:
      context: ./frontend
    ports:
      - "8080:80"
    depends_on:
      - backend

  backend:
    build:
      context: ./backend
    ports:
      - "8001:9099"
    depends_on:
      db:
        condition: service_healthy
      redis:
        condition: service_started

  db:
    image: postgres:15
    restart: always
    environment:
      POSTGRES_USER: postgre
      POSTGRES_PASSWORD: (填你自己的密码)
      POSTGRES_DB: ruoyi-fastapi
    volumes:
      - pgdata:/var/lib/postgresql/data
      - ./backend/sql:/docker-entrypoint-initdb.d
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U postgre"]
      interval: 5s
      timeout: 5s
      retries: 5

  redis:
    image: redis:7
    restart: always
    ports:
      - "6379:6379"

volumes:
  pgdata:

🧩 后端 Dockerfile 

FROM python:3.10-slim

WORKDIR /app

COPY ./app /app
COPY ./requirements-pg.txt /app
COPY ./.env.prod /app/.env.prod

RUN pip install --no-cache-dir -r requirements-pg.txt

CMD ["python", "app.py", "--env=prod"]
 

 🧩 前端 Dockerfile 

 

FROM nginx:stable-alpine

RUN rm -rf /usr/share/nginx/html/*
COPY ./dist /usr/share/nginx/html
COPY ./nginx.conf /etc/nginx/conf.d/default.conf

EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
 

  🧩nginx.conf

 

server {
    listen 80;
    server_name localhost;

    location / {
        root   /usr/share/nginx/html;
        index  index.html;
        try_files $uri $uri/ /index.html;
    }

    # ✅ 代理 API 请求到 FastAPI 后端
location /prod-api/ {
    proxy_pass http://backend:9099/;
    rewrite ^/prod-api/?(.*)$ /$1 break;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
}

}
 

最后可以在根目录下新建一个start.bat 就可以双击启动了

start.bat内容如下: 

@echo off
chcp 65001 >nul

echo [1/3] 构建镜像中...
docker compose build

echo [2/3] 启动服务中...
docker compose up -d

echo [3/3] 成功!请访问:
echo  前端页面:http://localhost:8080
echo  后端接口:http://localhost:8001/docs


pause

 

 

 

 

### 使用Docker部署RuoYi-Vue项目的教程 #### 安装Docker环境 为了能够顺利地使用Docker部署RuoYi-Vue项目,首先需要确保服务器上已经安装好Docker环境。这一步骤对于后续的操作至关重要,因为所有的容器化操作都将依赖于这个基础平台[^2]。 #### 准备工作:获取源码与构建镜像 通过`git`命令可以从远程仓库克隆完整的RuoYi-Vue项目到本地环境中。接着,在IDEA的帮助下可以将该项目编译打包成可执行的JAR文件(`ruoyi-admin.jar`)。与此同时,在同一个目录下还需要准备一个名为`Dockerfile`的文本文件用于定义如何基于当前的应用程序创建一个新的Docker镜像[^3]。 #### 创建必要的服务容器 针对数据库、缓存以及其他可能需要用到的服务组件(比如MySQL, Redis),可以通过简单的Docker命令快速启动相应的官方镜像实例。例如,要创建并运行一个Redis服务容器,则只需执行如下指令: ```bash docker run -d --name redis -p 6379:6379 redis ``` 这条命令将会以后台模式启动一个命名为`redis`的新容器,并将其内部监听的默认端口映射至主机相同的端口号上以便外部访问[^4]。 #### 构建应用镜像及发布 完成上述准备工作之后,就可以利用之前提到过的`Dockerfile`配合`docker build .`这样的命令行工具链来进行应用程序专用镜像的定制化组装了。一旦成功生成目标镜像,便可通过`docker-compose up`或者单独指定参数的方式让该Web应用正式上线对外提供HTTP(S)请求响应服务。 #### 配置持久化存储路径 考虑到数据安全性和稳定性方面的要求,建议设置合理的卷挂载策略使得重要的业务资料得以妥善保存而不至于随着容器销毁而丢失。具体做法是在启动各个功能模块对应的容器时指明其各自的工作区所在位置作为宿主机上的固定物理地址。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值