微WEB文件服务 Docker 部署指南

简介: 本文详解如何用 Docker Compose 一键部署微WEB文件服务,含 Python/Gunicorn 后端(支持分片上传、登录鉴权)与 Nginx 前端(HTTPS 入口+反向代理),镜像同步发布至阿里云 ACR 和 GitHub Container Registry,支持自定义域名、证书及持久化存储。

微WEB文件服务 Docker 部署指南

本文介绍如何使用 Docker Compose 部署完整的文件上传/下载服务。完整部署包含 两个镜像:

  1. 应用镜像(app):运行 Python / Gunicorn 后端,处理登录、上传、分片上传及文件下载等 API。
  2. 网页入口镜像(nginx):提供网页静态文件、HTTPS 入口,并将 API 请求转发给应用容器。

CI 会将这两个镜像分别发布到阿里云 ACR 和 GitHub Container Registry(GHCR)。每个镜像包含三个标签:latest、Git 提交短 SHA、北京时间构建时间戳(YYYYMMDD-HHMMSS)。这些是同一镜像的不同标签,不是额外的独立镜像。

一、镜像地址

阿里云 ACR(默认)

用途 镜像地址
应用后端 registry.cn-hangzhou.aliyuncs.com/chenby/file-server-docker:latest
Nginx 网页入口 registry.cn-hangzhou.aliyuncs.com/chenby/file-server-docker-nginx:latest

GitHub Container Registry(可选)

用途 镜像地址
应用后端 ghcr.io/cby-chen/file-server-docker:latest
Nginx 网页入口 ghcr.io/cby-chen/file-server-docker-nginx:latest

如果 GHCR 镜像是私有的,请先执行 docker login ghcr.io,并使用有权限读取该 Package 的 GitHub 令牌登录。

二、服务器准备

服务器需要安装 Docker Engine 和 Docker Compose v2(可使用 docker compose 命令)。以下命令以 Linux 服务器为例。

克隆仓库并进入目录:

git clone https://github.com/cby-chen/file-server-docker.git
cd file-server-docker

创建文件持久化目录:

sudo mkdir -p /data/files
sudo chown -R "$USER":"$USER" /data/files

上传文件会保存在宿主机的 /data/files 中。容器重建或升级时,只要不删除这个目录,文件就会保留。

三、配置环境变量

复制示例配置:

cp .env.example .env

编辑 .env,至少修改登录密码和密钥:

FILE_USER=admin
FILE_PASSWORD=请替换为高强度且独立的密码
SECRET_KEY=请替换为足够长的随机字符串
MAX_UPLOAD_SIZE=50GB
UPLOAD_CHUNK_SIZE=16MB
UPLOAD_CONCURRENCY=4
SESSION_TIMEOUT_HOURS=12

# 默认使用阿里云 ACR;如需使用 GHCR,请改为下面两行
APP_IMAGE=registry.cn-hangzhou.aliyuncs.com/chenby/file-server-docker:latest
NGINX_IMAGE=registry.cn-hangzhou.aliyuncs.com/chenby/file-server-docker-nginx:latest

生成强随机密钥的示例:

openssl rand -hex 32

把生成的字符串填入 SECRET_KEY。请妥善保存 .env,不要提交到 Git 仓库,也不要把密码或密钥发给他人。

如需改用 GHCR,将 .env 中的镜像地址改为:

APP_IMAGE=ghcr.io/cby-chen/file-server-docker:latest
NGINX_IMAGE=ghcr.io/cby-chen/file-server-docker-nginx:latest

Docker Compose 会从项目目录中的 .env 文件读取用于镜像地址和环境变量替换的配置。更多说明可参考 Docker 官方环境变量文档。

四、配置 HTTPS 证书

Nginx 配置要求以下两个文件存在于服务器的 certs/ 目录:

  • certs/server.crt
  • certs/server.key

仓库提供了生成自签名证书的脚本。在仓库根目录运行:

cd certs
sh generate-cert.sh
cd ..

此脚本生成的自签名证书仅适合测试或内网临时使用,浏览器会显示证书安全警告。正式对公网提供服务时,请将其替换为域名对应的可信 TLS 证书,并确保文件名仍为 server.crt 和 server.key。

五、启动完整服务

在仓库根目录执行:

docker compose pull
docker compose up -d

查看容器状态:

docker compose ps
docker compose logs --tail=100 app
docker compose logs --tail=100 nginx

检查后端健康状态:

docker compose exec app python -c "import urllib.request; print(urllib.request.urlopen('http://127.0.0.1:5000/health').read().decode())"

正常情况下,健康检查返回 ok。

六、访问网站和防火墙

当前 docker-compose.yml 默认映射端口:

  • HTTP:宿主机 17001,访问后会重定向到 HTTPS 的 17002 端口。
  • HTTPS:宿主机 17002。

因此访问地址为:

请在服务器防火墙和云厂商安全组中按需放行 TCP 17001、17002。生产环境建议使用域名和可信证书;如果希望使用标准的 80/443 端口,需要相应调整 Compose 端口映射及 Nginx 的重定向配置。

不要将应用容器的 5000 端口直接暴露到公网。当前 Compose 仅在内部网络中向 Nginx 暴露该端口。

七、升级镜像

发布新版本后,在服务器仓库目录执行:

docker compose pull
docker compose up -d
docker image prune -f

docker compose pull 会拉取 .env 指定的两个镜像,docker compose up -d 会按新镜像重建容器。升级前建议备份 /data/files 和 .env。

如果希望固定到某次构建,而不是始终使用 latest,可以把 .env 中的两个镜像标签改成同一次构建对应的短 SHA 标签或北京时间标签,然后执行上述升级命令。

八、GitHub Actions 自动构建与发布

每次向 main 分支推送代码,或手动触发工作流,GitHub Actions 会执行代码检查、构建两个镜像、运行应用健康检查、检查 Nginx 配置,然后发布到配置的镜像仓库。

工作流文件:.github/workflows/docker-ci.yml

ACR 配置

在 GitHub 仓库的 Settings → Secrets and variables → Actions 中配置以下 Repository variables:

  • ACR_REGISTRY:例如 registry.cn-hangzhou.aliyuncs.com,必须与 ACR 控制台显示的实际仓库域名一致。
  • ACR_IMAGE:应用镜像的完整仓库路径,不包含标签,例如 registry.cn-hangzhou.aliyuncs.com/chenby/cby。

配置以下 Repository secrets:

  • ACR_USERNAME:ACR 镜像仓库登录用户名。
  • ACR_PASSWORD:ACR 镜像仓库访问密码或专用凭证,不一定等于阿里云控制台登录密码。

工作流会将应用镜像推送到 ACR_IMAGE,将 Nginx 镜像推送到 ACR_IMAGE 后追加 -nginx 的仓库名。例如应用仓库为 registry.cn-hangzhou.aliyuncs.com/chenby/cby 时,Nginx 仓库为 registry.cn-hangzhou.aliyuncs.com/chenby/cby-nginx。

GHCR 使用工作流的 GITHUB_TOKEN 推送,无需额外配置个人令牌;工作流已声明 packages: write 权限。

查看构建状态:GitHub Actions

九、常见问题

1. 提示缺少 FILE_PASSWORD 或 SECRET_KEY

检查仓库根目录下是否存在 .env,并确认这两个变量已设置为非空值。修改后重新执行:

docker compose up -d

2. 拉取镜像时提示 denied 或 unauthorized

检查镜像仓库地址、标签和访问权限。私有 GHCR Package 需要先登录;ACR 私有仓库也需要使用有拉取权限的凭据登录。

3. 网站无法访问或 HTTPS 报错

检查容器状态和日志,确认 certs/server.crt、certs/server.key 存在,并检查服务器防火墙和云安全组是否放行 17001/17002 端口。自签名证书出现浏览器警告属于预期现象。

4. 网页能打开,但上传或 API 报错

检查两个容器是否都在运行,并查看 docker compose logs --tail=100 app nginx。不要把应用容器的 5000 端口暴露到公网。

5. 上传文件在重建容器后不见了

确认宿主机的 /data/files 挂载正确,并且没有删除宿主机文件目录。重要数据应另行备份。

十、常用维护命令

# 查看容器
docker compose ps

# 查看实时日志
docker compose logs -f

# 重启服务
docker compose restart

# 停止并移除容器(不会删除绑定挂载中的 /data/files)
docker compose down

# 查看 Compose 最终解析出的配置(注意输出可能包含敏感环境变量)
docker compose config

注意:docker compose down 不会删除宿主机的 /data/files;请勿手动删除该目录,除非确定不再需要其中的数据。

相关文章
|
20天前
|
人工智能 JSON API
全网刷屏的 Jev 模型正式开放!一手实战测评 + 保姆级教程
全网爆火的 Jev 模型是什么?有什么用?怎么使用?怎么接入 AI 编程工具?效果真的好么?傻子可懂的 Jev 保姆级实战教程 + 项目实战测评来啦
8883 26
|
19天前
|
人工智能 并行计算 PyTorch
秋叶 ComfyUI 2026 整合包 v3.2 完整部署教程:Python 3.13 + Torch 2.13 全栈升级
秋叶aaaki ComfyUI 2026年8月整合包v3.2正式发布!全面升级Python 3.13.11、PyTorch 2.13.0+cu130及ComfyUI v0.30.2,原生支持MiniMax H3、Wan 2.2、Qwen-Image-2.1等2026主流音视频/图像模型,解压即用,无需环境配置。
3821 16
|
18天前
|
人工智能 测试技术 API
最近全网爆火的 Jev 到底是什么?适合干什么、怎么用,一篇讲透!
Jev是TypeSafe AI推出的“系统一模型”,不生成文本,专做毫秒级结构化决策:Choice(多选)、Score(打分)、Noul(是非概率)。响应快193倍、成本低444倍,适合工单路由、内容审核、测试定级等高频判断场景。
2244 4
最近全网爆火的 Jev 到底是什么?适合干什么、怎么用,一篇讲透!
|
5天前
|
人工智能 JSON 自然语言处理
2026 年 Jev 决策模型深度拆解:原理解读、实战测评与保姆级落地教程
有一款特殊AI模型在开发者圈子刷屏,它摒弃传统大模型擅长的对话聊天能力,专注做高速结构化决策,它就是TypeSafe AI推出的Jev模型。该模型由ChatGPT共同发明人Diogo Almeida主导研发,定位为**System One Model(系统一模型)**,对标人类大脑快速直觉判断的思维模式,在响应延迟、调用成本、结构化输出稳定性上相比传统生成式大模型有着巨大差异。本文会完整拆解Jev底层原理、三大核心原语能力、适用业务场景,同时提供可直接运行的curl、Python代码示例,并且结合多组实测数据,客观分析模型优势与能力边界,帮助普通开发者和AI应用从业者快速上手落地。
409 1
|
13天前
|
人工智能 Linux 开发者
【2026国内使用】Codex安装过程一篇讲透(Win/Mac/Linux全支持)
Codex是OpenAI推出的AI编程智能体,可读取本地项目、理解需求并自动修改代码。支持桌面GUI、命令行(CLI)及VS Code/Cursor插件三种形态,覆盖可视化操作、终端高效开发与编辑器无缝集成场景,助开发者用自然语言驱动编码全流程。(239字)
【2026国内使用】Codex安装过程一篇讲透(Win/Mac/Linux全支持)
|
6天前
|
存储 人工智能 并行计算
大模型本地部署终端选型方法论:以 Qwen3.8-27B 为例的四档分层完整流程
本文提出一套大模型本地部署终端选型方法论:定约束、定档位、定框架、定参数四步决策法,配合入门、主力、质量、无损四档分层模型。以 Qwen3.8-27B 实测数据为例,逐环节解读显存、带宽、存储、散热、系统、预算等要素,给出面向不同预算的优选方案、决策自查清单与市场观察框架。文末前瞻 AI 笔记本的 CPU+GPU 与统一内存两条路线,论证四步决策法在新品类上的延续性。
|
7天前
|
人工智能 Linux Windows
千问办公(QwenWork)官网入口:其实有2个,一个是网页端千问办公,一个是介绍指南页面
千问办公(QwenWork)是阿里云推出的AI智能办公平台,支持网页端直接使用及Windows/Mac/Linux客户端下载。提供PPT生成、财报分析、网页搭建等AI功能,个人版免费,企业版198元/席/月。详情见官网qwenwork.cn或阿里云产品页。
951 0
千问办公(QwenWork)官网入口:其实有2个,一个是网页端千问办公,一个是介绍指南页面
|
19天前
|
云安全 人工智能 安全