chore: update production Compose and deployment instructions

This commit is contained in:
陈煜 committed 2026-10-07 21:01:51 +08:00
1 parent f3028cd19c
commit 79e24f7ae3
2 files changed
+92 -8

No files matched your search

+31 -8
View File
@@ -1,26 +1,49 @@
services: services:
app: app:
image: worthpath:${WORTHPATH_IMAGE_TAG:-local} image: worthpath:local
build:
context: . # 服务器生产环境配置,包含数据库连接、域名和安全开关
dockerfile: Dockerfile
env_file: env_file:
- .env.production - /opt/worthpath/.env.production
environment: environment:
ICON_STORAGE_DIR: /app/data/icons ICON_STORAGE_DIR: /app/data/icons
# 图标持久化目录,宿主机目录需允许 UID/GID 1000 读写
volumes: volumes:
- type: bind - type: bind
source: /opt/worthpath/data/icons source: /opt/worthpath/data/icons
target: /app/data/icons target: /app/data/icons
bind: bind:
create_host_path: false create_host_path: false
# 容器通过此名称连接宿主机 MySQL
extra_hosts:
- "host.docker.internal:host-gateway"
# 只供宿主机 Nginx 访问,不向公网直接开放应用端口
ports: ports:
- '127.0.0.1:3100:3100' - "127.0.0.1:3100:3100"
networks:
- worthpath
restart: unless-stopped restart: unless-stopped
init: true init: true
stop_grace_period: 30s stop_grace_period: 30s
# 禁止容器进程通过执行程序获得额外权限
security_opt:
- no-new-privileges:true
logging: logging:
driver: json-file driver: json-file
options: options:
max-size: '10m' max-size: "10m"
max-file: '3' max-file: "3"
networks:
worthpath:
# 使用已经创建的网络,Compose 不负责创建或删除它
external: true
name: worthpath
+61
View File
@@ -1,5 +1,58 @@
# WorthPath Docker 部署 # WorthPath Docker 部署
```
# 打包
docker build -t worthpath:local .
docker save -o E:\worthpath-local.tar worthpath:local
```
```shell
# 添加固定网桥
docker network create \
--driver bridge \
--subnet 172.30.50.0/24 \
--gateway 172.30.50.1 \
--opt com.docker.network.bridge.name=br-worthpath \
worthpath
# MySQL 允许172.30.50.0/255.255.255.0 连接
# 更新防火墙
ip -4 addr show br-worthpath
sudo ufw allow in on br-worthpath \
from 172.30.50.0/24 \
to 172.17.0.1 port 3306 proto tcp \
comment 'WorthPath MySQL'
# 创建图标持久化目录,容器内 node 用户的 UID/GID 为 1000
sudo install -d -m 750 -o 1000 -g 1000 /opt/worthpath/data/icons
# 执行数据库迁移
docker compose run --rm app node scripts/database.cjs deploy
# 初始化内置图标
docker compose run --rm app node scripts/seed-icons.cjs
# 启动应用
docker compose up -d --no-build app
docker compose ps
docker compose logs --tail=100 app
# 更新
# 保留旧镜像,方便回退
docker tag worthpath:local worthpath:rollback
# 加载新镜像并重新创建应用容器
docker load -i worthpath-local.tar
docker compose up -d --no-build --force-recreate app
# 查看运行状态和日志
docker compose ps
docker compose logs --since=2m --tail=100 app
```
## 更新已部署的项目(尚未上传图片) ## 更新已部署的项目(尚未上传图片)
图标持久化新增配置不需要数据库结构迁移,也不需要搬运上传图片。保留服务器已有 `.env.production`、MySQL 与反向代理配置;更新镜像和 Compose 的图标挂载即可。历史空库迁移修复也包含在此次更新中,已完成迁移的数据库不用重复初始化或运行图标 seed。 图标持久化新增配置不需要数据库结构迁移,也不需要搬运上传图片。保留服务器已有 `.env.production`、MySQL 与反向代理配置;更新镜像和 Compose 的图标挂载即可。历史空库迁移修复也包含在此次更新中,已完成迁移的数据库不用重复初始化或运行图标 seed。
@@ -123,6 +176,14 @@ docker compose version
## 2. 配置生产环境 ## 2. 配置生产环境
针对本次正式部署:网站为 `https://worthpath.chyuovo.top`,MySQL 和 Nginx 均在宿主机,应用在容器内。根目录 `.env.production` 已按此拓扑填写并添加中文注释,数据库和初始管理员密码仍为占位符,必须自行替换。
应用容器通过 `host.docker.internal:3306` 访问数据库,Compose 已加入 `host-gateway` 映射。映射不能绕过 MySQL 的监听限制:若 MySQL 只绑定宿主机 `127.0.0.1`,需另外允许 Docker 可达的宿主机私有接口,限制数据库账号来源和防火墙,不开放公网 3306。MySQL 8.0.13+ 支持配置多个具体监听地址;填写前需确认服务器版本和实际接口地址。
宿主机 Nginx 上游使用 `http://127.0.0.1:3100`,并保留外部 Host。当前 Compose 的端口只绑定宿主机回环地址,无需共享 Docker 网络,不应改成公网发布 3100。
上述数据库监听与 Nginx HTTPS 代理配置尚未在服务器执行或验证;仅写环境文件不会使这些服务器前置条件自动完成。
首次部署复制模板;已有配置时不要再次覆盖: 首次部署复制模板;已有配置时不要再次覆盖:
```bash ```bash