【Docker 部署】FastAPI + Python + Vue.js

使用 FastAPI + Python + Vue.js 并通过 Docker 进行部署,可以通过以下步骤实现:

1. 项目结构

假设你的项目结构如下:

project-root/
├── backend/
│   ├── main.py
│   ├── requirements.txt
│   └── Dockerfile
├── frontend/
│   ├── src/
│   │   └── App.vue
│   ├── Dockerfile
│   └── package.json
└── docker-compose.yml

2. 后端(FastAPI)配置

backend/main.py
from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def read_root():
    return {"message": "Hello from FastAPI!"}
backend/requirements.txt
fastapi
uvicorn
backend/Dockerfile
FROM python:3.9-slim

WORKDIR /app

COPY . /app

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

CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]

3. 前端(Vue.js)配置

frontend/src/App.vue
<template>
  <div>
    <h1>Vue.js + FastAPI</h1>
    <p>{{ message }}</p>
  </div>
</template>

<script>
import axios from 'axios';

export default {
  data() {
    return {
      message: ''
    };
  },
  async created() {
    const response = await axios.get('http://backend:8000/');
    this.message = response.data.message;
  }
};
</script>
frontend/Dockerfile
FROM node:16

WORKDIR /app

COPY . /app

RUN npm install

CMD ["npm", "run", "serve"]

4. Docker Compose 配置

在项目根目录创建 docker-compose.yml 文件:

version: '3.8'

services:
  backend:
    build: ./backend
    ports:
      - "8000:8000"
    networks:
      - app-network

  frontend:
    build: ./frontend
    ports:
      - "8080:8080"
    networks:
      - app-network

networks:
  app-network:
    driver: bridge

5. 构建和运行

在项目根目录运行以下命令:

docker-compose up --build

6. 访问应用

  • 前端应用可通过 http://localhost:8080 访问。
  • FastAPI 的接口文档可通过 http://localhost:8000/docs 访问。

7. 注意事项

  • 确保前端代码中的 API 请求地址正确指向后端服务(如 http://backend:8000/)。
  • 如果需要生产环境部署,建议使用 Nginx 作为反向代理。

通过以上步骤,你可以快速实现 FastAPI + Vue.js 的前后端分离项目,并通过 Docker 进行容器化部署。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值