chore: update production Compose and deployment instructions
This commit is contained in:
1 parent
f3028cd19c
commit
79e24f7ae3
2 files changed
+92
-8
No files matched your search
+31
-8
@@ -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
|
||||||
@@ -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
|
||||||
|
|||||||
Reference in new issue
Block a user