Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
P
program-updater
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
周田
program-updater
Commits
0a7111f7
Commit
0a7111f7
authored
Oct 28, 2026
by
周田
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: docker 部署
parent
907da208
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
91 additions
and
0 deletions
+91
-0
.dockerignore
.dockerignore
+14
-0
Dockerfile
Dockerfile
+23
-0
README.md
README.md
+8
-0
compose.yaml
compose.yaml
+13
-0
README.md
distribution-server/README.md
+33
-0
No files found.
.dockerignore
0 → 100644
View file @
0a7111f7
*
!pyproject.toml
!uv.lock
!distribution-server/
distribution-server/*
!distribution-server/__init__.py
!distribution-server/app.py
!distribution-server/server.py
!distribution-server/settings.py
!distribution-server/api/
!distribution-server/core/
!distribution-server/frontend/
**/__pycache__/
**/*.py[cod]
Dockerfile
0 → 100644
View file @
0a7111f7
FROM
ghcr.io/astral-sh/uv:0.12.13 AS uv
FROM
python:3.12-slim AS dependencies
COPY
--from=uv /uv /usr/local/bin/uv
WORKDIR
/app
COPY
pyproject.toml uv.lock ./
RUN
uv sync
--locked
--extra
server
--no-dev
--no-install-project
--no-cache
FROM
python:3.12-slim
ENV
PYTHONDONTWRITEBYTECODE=1 \
PYTHONUNBUFFERED=1
WORKDIR
/app
COPY
--from=dependencies /app/.venv /app/.venv
COPY
distribution-server/ ./distribution-server/
RUN
groupadd
--system
--gid
10001 distribution
\
&&
useradd
--system
--uid
10001
--gid
distribution
--no-create-home
distribution
\
&&
mkdir
-p
/app/distribution-server/data
\
&&
chown distribution:distribution /app/distribution-server/data
USER
distribution
EXPOSE
8000
HEALTHCHECK
--interval=30s --timeout=5s --start-period=10s --retries=3 \
CMD ["/app/.venv/bin/python", "-c", "from urllib.request import urlopen; urlopen('http://127.0.0.1:8000/healthz', timeout=3).close()"]
CMD
["/app/.venv/bin/python", "-m", "distribution-server.server"]
README.md
View file @
0a7111f7
...
@@ -8,6 +8,14 @@
...
@@ -8,6 +8,14 @@
默认安装只包含 updater 运行依赖;管理 Web 的 FastAPI/Uvicorn 通过
`server`
extra 启用,不会进入目标应用的基础安装。
默认安装只包含 updater 运行依赖;管理 Web 的 FastAPI/Uvicorn 通过
`server`
extra 启用,不会进入目标应用的基础安装。
Docker Compose 部署分发服务(默认仅本机访问,数据保存在 Docker 命名卷):
```
bash
docker compose up
-d
--build
```
局域网访问、安全限制及数据迁移说明见
[
`distribution-server/README.md`
](
./distribution-server/README.md
)
。
## 启动 Web 与测试
## 启动 Web 与测试
需要 Python 3.12 和 uv。从仓库根目录使用
`python -m`
启动,不需要先设置环境变量;uv 会根据根
`pyproject.toml`
自动准备服务器依赖:
需要 Python 3.12 和 uv。从仓库根目录使用
`python -m`
启动,不需要先设置环境变量;uv 会根据根
`pyproject.toml`
自动准备服务器依赖:
...
...
compose.yaml
0 → 100644
View file @
0a7111f7
services
:
distribution-server
:
build
:
context
:
.
dockerfile
:
Dockerfile
restart
:
unless-stopped
ports
:
-
"
18000:18000"
volumes
:
-
distribution-data:/app/distribution-server/data
volumes
:
distribution-data
:
distribution-server/README.md
View file @
0a7111f7
...
@@ -25,6 +25,39 @@ distribution-server/
...
@@ -25,6 +25,39 @@ distribution-server/
管理页、下载页和静态资源要求浏览器在使用缓存前重新验证;更新前端后如仍看到旧页面,可重新加载页面。
管理页、下载页和静态资源要求浏览器在使用缓存前重新验证;更新前端后如仍看到旧页面,可重新加载页面。
## Docker Compose 部署
安装 Docker Engine 和 Docker Compose 后,在仓库根目录运行:
```
bash
docker compose up
-d
--build
docker compose ps
docker compose logs
-f
distribution-server
```
默认仅在部署主机的
`127.0.0.1:8000`
监听,访问
`http://127.0.0.1:8000/`
。
容器以非 root 用户运行,并从根目录的
`uv.lock`
安装服务器依赖。SQLite 数据库和
程序包保存在 Docker 命名卷
`distribution-data`
中,不会随容器重新创建而丢失;
该卷与本地直接运行时的
`distribution-server/data/`
相互独立。升级时重新运行
`docker compose up -d --build`
,并定期备份整个卷。
`docker compose down`
保留数据,
`docker compose down -v`
会删除数据卷,请谨慎操作。
可通过环境变量调整宿主机绑定地址和端口。例如,限制好防火墙后允许局域网访问:
```
bash
DISTRIBUTION_BIND_ADDRESS
=
192.168.1.20
DISTRIBUTION_PORT
=
8000 docker compose up
-d
--build
```
将地址替换为部署主机的局域网 IP。管理接口没有登录验证,Docker 端口映射或反向代理
可能使服务看到的是网关/代理地址,而不是访问者地址,因此不能依赖服务内的
`ALLOWED_CIDRS`
在容器环境中可靠地限制外部访问。开放非回环地址前,必须在宿主机、
网络或可信反向代理上限制管理接口的访问;不要将整个端口直接暴露给不可信网络。
反向代理只开放公开下载路径时,也应正确转发 Host 并按实际情况限制管理路径。
如需迁移现有数据,先停止所有使用该数据库的服务,再将原数据目录完整备份并复制到
Docker 数据卷,确保容器内 UID/GID
`10001`
可读写。不要让本地服务和容器同时使用
同一份数据。容器内运行参数沿用
`settings.py`
,修改后需重新构建镜像。
## 直接启动
## 直接启动
分发服务器可运行在 Linux、Windows 或 macOS。它只接收、保存并分发 Windows exe,不会在服务器上运行这些 exe。开发或试用时不必手动创建虚拟环境、设置环境变量或执行
`pip install`
;在仓库根目录运行:
分发服务器可运行在 Linux、Windows 或 macOS。它只接收、保存并分发 Windows exe,不会在服务器上运行这些 exe。开发或试用时不必手动创建虚拟环境、设置环境变量或执行
`pip install`
;在仓库根目录运行:
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment