fastweb

Windows上部署FastAPI、Nginx与MySQL的Docker化应用指南,
本文详细介绍了如何在Windows系统上使用Docker和docker-compose部署FastAPI应用,包括创建Dockerfile、docker-compose.yml配置,以及Nginx的代理设置,确保MySQL数据持久化。

假设使用的FastAPI作者提供的镜像

FROM tiangolo/uvicorn-gunicorn-fastapi:python3.9

设置工作目录

WORKDIR /app

将本地源码复制到容器内

COPY ./src .

安装依赖(如果使用poetry,则执行poetry install)

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

暴露端口

EXPOSE 8000

设置启动命令

CMD [“uvicorn”, “main:app”, “–host”, “0.0.0.0”, “–port”, “8000”]

import logging
import os

定义日志文件的路径

log_dir = “/path/to/your/log/directory”
if not os.path.exists(log_dir):
os.makedirs(log_dir)
log_file = os.path.join(log_dir, “my_log_file.log”)

配置日志记录器

logging.basicConfig(
filename=log_file, # 日志文件名,如果没有这个参数,日志输出到console
level=logging.DEBUG, # 日志级别,建议生产环境等级调高一些,如WARNING或ERROR
format=‘%(asctime)s - %(name)s - %(levelname)s - %(message)s’ # 日志格式
)

在代码中记录日志

logger = logging.getLogger(name)
logger.debug(“This is a debug message”)
logger.info(“This is an info message”)
logger.warning(“This is a warning message”)
logger.error(“This is an error message”)
logger.critical(“This is a critical message”)

compose

version: ‘3.8’

services:
app:
build: .
ports:
- “8080:8000”
depends_on:
- db
networks:
- backend

nginx:
image: nginx:latest
volumes:
- ./nginx/conf.d:/etc/nginx/conf.d
- static_volume:/app/static
ports:
- “80:80”
depends_on:
- app
networks:
- frontend
- backend

db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: your_password
MYSQL_DATABASE: your_db_name
MYSQL_USER: your_user
MYSQL_PASSWORD: your_password
volumes:
- db_data:/var/lib/mysql
networks:
- backend

volumes:
db_data:
static_volume:

networks:
frontend:
backend:

在Windows系统上部署FastAPI、Nginx和MySQL的Docker化应用,你需要按照以下步骤进行操作:

  1. 准备工作: - 确保你的Windows系统上已经安装了Docker Desktop,并且Docker服务正在运行。 - 准备好项目结构,FastAPI应用程序代码应该与Dockerfile、docker-compose.yml文件位于同一目录或其子目录中。2. 创建Dockerfile(针对FastAPI): - 编写一个Dockerfile来构建FastAPI应用镜像。FastAPI作者提供的自动调整workers数量的镜像可以作为一个基础镜像使用,或者你也可以基于官方Python镜像自行配置Gunicorn或Uvicorn服务器。Dockerfile# 假设使用的FastAPI作者提供的镜像FROM tiangolo/uvicorn-gunicorn-fastapi:python3.9# 设置工作目录WORKDIR /app# 将本地源码复制到容器内COPY ./src .# 安装依赖(如果使用poetry,则执行poetry install)RUN pip install --no-cache-dir -r requirements.txt# 暴露端口EXPOSE 8000# 设置启动命令CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]3. 编写docker-compose.yml: - 创建一个docker-compose.yml文件以定义服务之间的关系和网络设置,包括FastAPI服务、Nginx代理服务以及MySQL数据库服务。yamlversion: '3.8'services: app: build: . ports: - "8080:8000" depends_on: - db networks: - backend nginx: image: nginx:latest volumes: - ./nginx/conf.d:/etc/nginx/conf.d - static_volume:/app/static ports: - "80:80" depends_on: - app networks: - frontend - backend db: image: mysql:5.7 environment: MYSQL_ROOT_PASSWORD: your_password MYSQL_DATABASE: your_db_name MYSQL_USER: your_user MYSQL_PASSWORD: your_password volumes: - db_data:/var/lib/mysql networks: - backendvolumes: db_data: static_volume:networks: frontend: backend:4. 配置Nginx: - 在./nginx/conf.d目录下创建一个default.conf配置文件,用于代理请求到FastAPI应用。confserver { listen 80; location / { proxy_pass http://app:8000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; }}5. 启动服务: - 在终端进入包含docker-compose.yml的目录并运行以下命令以构建和启动容器。bashdocker-compose up -d6. 持久化数据: - 上述compose文件中的db_data卷将确保MySQL的数据在容器重启后得到保留。请根据实际情况调整上述示例中的镜像版本、环境变量、端口映射等设置。这样,你就能够在Windows系统上通过Docker Compose搭建起FastAPI + Nginx + MySQL的应用环境。

server {
listen 80;

location / {
    proxy_pass http://app:8000;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值